Skip to main content

Full text of "Peeker "Magazin für Microcomputer", Issue 8-1985"

See other formats


Nr. 8/85 August 


DM 6,50, sfr 6,50, óS 50, Lit 5900, hfl 7,50 


| MAGAZIN FUR APPLE-COMPUTER 


ufwerktestprogramm 
Graf-quattro 
` Double-Lores-Erweiterungen 
Adreßverwaltung mit dBASE 
Wordstar und FX-80 
akultäten 
- Polaroid-System 

























t; y EEN 


Hüthig 


PUBLIKATION 








Zo 


Hüthig-FACHBUCH-TIP 





Apple ProDOS 
für Aufsteiger 


Mit ausführlichen Programm- 
beispielen 


von Ulrich Stiehl 

Band 2: 1. Auflage 1985, 
208 S., kart., DM 30,— 
ISBN 3-7785-1036-3 


Begleitdiskette 
DM 28,— 





Ulrich Stiehl 


P 4 “t e“ s mag ES |. A Áb Á Á 


für Aufsteiger 


Mit ausführlichen 
Programmbeispielen 





Der zweite Band von ,ProDOS für 
Aufsteiger“ ist wieder ein typisches 
Tips- und Tricks-Buch, das viele 
nützliche Utilities und Hilfsroutinen 
enthält, die dem Applesoft- und As- 
semblerprogrammierer den Umgang 
mit ProDOS erleichtern sollen. 
Zunächst wird eine bewußt leichtver- 
ständliche Einführung in die 
Applesoft-Programmierung unter 
ProDOS gegeben, die sich insbeson- 
dere an diejenigen Leser wendet, die 
das alte DOS 3.3 nur noch „am 
Rande“ kennengelernt haben. 

Im Anschluß daran wird gezeigt, wie 
man einige Unzulänglichkeiten des 
BASIC.SYSTEMs durch Tricks behe- 
ben kann, z. B. Einlesen von Strings 
mit Komma und Doppelpunkt, Laden 
und Speichern von Zahlen als Binär- 
dateien, Simulierung des fehlenden 
MON-Befehls u. a. 





Den Hauptteil des Buches bilden so- 
fort einsatzfähige Utilities, die alle 
klassischen „Pflichtübungen“ ab- 
decken, z. B. Dateileseprogramme 
mit ASCII- und Hex-Dump, Dateiko- 
pierprogramme, Diskettenformatier- 
und -kopierprogramme, Disketten- 
vergleichsprogramme, Konvertie- 
rungsprogramme (DOS 3.3 nach 
ProDOS), Bad-Block-Programme 

u. a. Zur Anwendung dieser Utilities 
sind keinerlei Assemblerkenntnisse 
erforderlich. 











Das Gesetz der Sàttigung hat jeder schon 
am eigenen Leibe verspürt. In der Psycho- 
logie sprechen wir von abnehmender Reiz- 
wirkung, in der Wirtschaftwissenschaft von 
Marktsattigung: Die erste Portion eines 
saftigen Steaks lassen wir uns einiges 
kosten; auch das zweite Tournedos ist 
vielen ihr Geld wert; aber nach dem dritten 
Stück haben wir sprichwörtlich „die 
Schnauze voll“ — die Sättigung ist erreicht. 


Was wir zur Zeit in der Mikrocomputer- 
branche erleben, ist sowohl eine psycho- 
logische als auch eine ökonomische Såtti- 
gung: psychologisch deshalb, weil der 
Reiz des Neuen verflogen ist, ökonomisch 
deshalb, weil der Mikrocomputer inzwi- 
schen in vielen Büros und Wohnungen 
steht. Wie an den anderen Pionieren der 
Mikro-Ära ist auch an der Firma Apple 
diese „Sättigung“ nicht spurlos vorüber- 
gegangen: Man spricht bereits von weite- 
ren Entlassungen — auch in Deutschland —, 
und Übernahmegerüchte halten sich hart- 
näckig in allen größeren Wirtschaftsblät- 
tern. Ein durchgreifendes Revirement in 
der Führungsetage in Cupertino hat mitt- 
lerweile sein zweites Opfer gefunden: 


editorial 


Steven Jobs wurde nahegelegt, vom Vor- 
stand in den Aufsichtsrat überzuwechseln 
— ein probates Mittel, um unliebsame 
Manager aufs Abstellgleis zu schieben. 
Wie berichtet, hatte Steve Wozniak bereits 
vorher seinen Hut genommen. Damit sind 
die beiden legendåren Grunder des Apple- 
Imperiums ins zweite Glied zuruckgetreten. 


Apple war die einzige Mikrocomputerfirma, 
bei der der Begriff des ,Personal"-Com- 
puters noch eine andere, tiefere Bedeu- 
tung hatte, nåmlich die Bedeutung des von 
einer Persönlichkeit geschaffenen und ge- 
prågten Mikrocomputers, wobei ich hier 
namentlich an Steve Wozniak als den tech- 
nischen Kopf des Zweigespanns denke. 
Dies wird sich nun åndern, denn die Kopp- 
lung Apple/Sculley hat einen schaleren 
Sinn als die Assoziation Apple/Wozniak. 
Woz stand fur Genie. Sculley steht fur 
Pepsi. Nach den sieben fetten Jahren kom- 
men jetzt die sieben anderen. Da ist kein 
Platz mehr fur geniale Eigenbrötler — oder 
um mit G. B. Shaw zu sprechen: ,Genius 
demanding bread is given a stone ..." 


P i APR 


Ulrich Stiehl 








Am 
Huthig 

PUBLIKATION 

S 





Impressum 


Peeker 

Magazin für Apple-Computer 
2. Jahrgang 1985 

ISSN 0176-9200 

@ für den gesamten Inhalt 
einschlieBlich der Programme 
Dr. Alfred Hüthig Verlag, 
Heidelberg 1985 


Verleger und Herausgeber: 
Dipl.-Kfm. Holger Hüthig 
Geschäftsführung Zeitschriften: 
Heinz Melcher 


Chefredakteur: 

Ulrich Stiehl (us) Tel. (06221) 489352 
(Bitte nur in redaktionellen Angelegenheiten 
anrufen) 


Anzeigenleitung: 

Jürgen Maurer, Tel. (06221) 489218 
z. Zt. gilt Anzeigenpreisliste Nr. 3 
Vertriebsleitung: 

Ruth Biller, Tel. (06221) 489280 
Produktionsleitung: Gunter Sokollek 
Gestaltung: Rainer Schmitt 

Titelbild: Creative Computer 

Service, Mannheim 








Technik 


Testprogramme för Apple-ll- 
Diskettensysteme 

Analyse von Disketten, Laufwerk 
und Controller 

von Dipl.-Ing. Gerhard Berg 


ProDOS 


ProDOS für Anfänger 

Teil 3: Geheimnisse von BSAVE 
und BLOAD 

von Ulrich Stiehl 


Grafik 


Graf-quattro Teil 3: Tricks über Tricks 
von Nino G. Barbieri 


Double-Lores-Applesoft-Erweiterungen 
von Karl-Walter Bott 


CP/M 


Adreßverwaltungsprogramm mit dBASE Il 
von Ing. (grad.) Ernst Fischer 


Wordstar druckt internationale 
Zeichensätze 

Frei definierte Sonderzeichen 
auf dem FX-80 nutzen 

von Dipl.-Ing. H. A. Rohrbacher 


Pascal 


Tips und Tricks in Pascal 
Teil 1: Die versteckte Prozedur „Idsearch“ 
von Dieter Geiß 


Assembler 


Assembler-Pseudo-Opcode- 
Referenztabelle 
von Dr. Jürgen B. Kehrel 


Verlag: Erscheinungsweise: 12 Hefte jährlich, 
Erscheinungstag jeweils 1 Woche vor Monatsbeginn. 
Jahresabonnement DM 72,-, einschließlich MwSt, 
im Inland portofrei. Einzelheft DM 6,50 


Dr. Alfred Hüthig Verlag GmbH 
Im Weiher 10, Postfach 102869 
6900 Heidelberg 

Telefon (06221) 489-0 

Telex 4-6 1727 hued d. 


Vertrieb Handel: 


Breslauer Str. 5, Postfach 1123, 
8057 Eching b. München, 
Tel. 089/3191067, Telex 0522 656 


18 


24 


32 


40 


45 


48 


51 


MZV — Moderner Zeitschriften Vertrieb GmbH 


EEKER 


MAGAZIN FÜR APPLE-COMPUTER ` 


Fakultäten 
von Roland und Manfred Fietkau 


Mecki 


Microsoft Basic leicht geMACht 
Teil 4: Die Grafik 
von Pit Capitain 


Hobby 


Grafik-Demonstrationen 
von Ralf Knoke 


Zeichenjagd. Ein Einzeiler 
von Hans-Peter Lendle 


Testberichte 


Die Polaroid-Foto-Systeme 
getestet von Thomas Bühner 
und Prof. Dr. Klaus Hausmann 


Das Bildverarbeitungssstem MAGIC 
Siemens entdeckt neue Primzahl 
TRICARD-Multifunktionskarte 

für Apple lle 

Copy-Killer jetzt in deutsch 
Microfloppy mit 2 x 1 MByte 
ProDOS-Debugger BUGBYTER 


Beagle Graphics 
getestet von Rolf W. Becker 


Errata 

SUPERDUMP und Apple Ilc 
RAM.FRE 

Diversi-DOS 2-C 


Inserentenverzeichnis 


Zahlungen: an den Dr. Alfred Hüthig Verlag 
GmbH, D-6900 Heidelberg 1: Postscheck- 
konten: BRD: Karlsruhe 485 45-753; 
Österreich: Wien 7555888; Schweiz: Basel 
40-24417; Niederlande: Den Haag 145728; 
Italien: Mailand 47718; Belgien: 

Brüssel 723026; Dänemark: Kopenhagen 
34969; Norwegen: Oslo 994 24; 


Schweden: Stockholm 5477 76-5 Printed in Germany 








56 


60 


67 


69 


71 


74 
74 


74 
76 
76 
76 


77 


50 
70 
68 


78 


Bankkonten: Landeszentralbank Heidel- 
berg 67 207 341; BLZ 672 000 00; Deutsche 
Bank Heidelberg 02165041; BLZ 
67270003; Bezirkssparkasse Heidelberg 
204 51, BLZ 67250020. 


Herstellung: Heidelberger Verlagsanstalt 





Testprogramm fur 
Apple-ll- an opno enara oe 
Diskettensysteme 












Anal Diskett 1% 
nalyse von Disketten, Z i 
fi 


Laufwerk und Controller 


6 Peeker 8/85 





Im Rahmen der Artikelserie über Disket- 
tensysteme bringen wir in dieser Ausgabe 
ein Programm zum Testen des Apple-Dis- 
kettensystems. Das Programm ist ein un- 
erläßliches Werkzeug für alle, die sich nå- 
her mit Floppy-Laufwerken beschäftigen. 


Insbesondere wird das Programm für fol- 
gende Anwendungen gebraucht: 

Test aller Controller- und Laufwerk- 
Funktionen, 

Justage von Diskettenlaufwerken, 
Fehlersuche und Reparatur von Lauf- 
werken und Controllern, 

Test von Disketten, 
Anpassung von 
werken, 
Funktionsanalyse von Controller und 
Laufwerk. 


Nicht-Apple-Lauf- 


Dazu verfügt das Programm über folgende 
Eigenschaften: 


— einfache Bedienung durch Menüsteue- 
rung, 

— Fehlermeldungen bei Bedienungsfeh- 
lern, 

— grafische Ausgabe zur besseren An- 
schaulichkeit, 

— leichtes Oszillographieren durch spe- 
zielle Trigger-Signale und Betriebs- 
arten, 

— Laden des Programms von Diskette 
oder Kassette, 

— Betrieb aller Controller, die bus-seitig 
Apple-kompatibel sind, 

— Betrieb aller Disketten-Laufwerke bis zu 
80 Spuren. 


1. Eingabe und Start des Pro- 
gramms 


Da das Programm die hochauflösende 
Grafik benutzt, muß dafür gesorgt werden, 
daß das Programm oberhalb der Grafik- 
Seite 1 (ab $4000) im RAM liegt. Um dies 
zu erreichen, müssen als erstes die fol- 
genden Befehle eingegeben werden: 


POKE 104, 64 
POKE 16384, 0 
NEW 


Mit dem Befehl POKE 104, 64 wird der 
Anfang des BASIC-Programms von $0800 
nach $4000 verschoben. Wegen einer Ei- 
genart des Applesoft-Interpreters muß das 
erste Byte des Programmspeicherbe- 
reichs zu Null gesetzt werden. Dies ge- 
schieht mit dem Befehl POKE 16384, 0. 
Mit dem Befehl NEW werden alle anderen 


Peeker 8/85 


DISKTEST.B 


9000: 
9002: 
9004: 
9006: 
9008: 
900A: 
900D: 
900F: 
9011: 
9013: 
9015: 
9017: 
9019: 
901A: 
901C: 
901E: 
9020: 


9021: 
9023: 
9025: 
9027: 
902A: 
902D: 
9030: 
9031: 
9032: 
9033: 
9034: 
9035: 


A6 
A9 
85 


A4 
BD 


c5 
FØ 
E6 
DØ 
E6 
c8 
DØ 
E6 
DØ 
6Ø 


FA 


FE 
FF 
FC 
8C CØ 
FB 
FB 
Ø6 
FE 
02 
FF 


EE 
FD 
EA 


FA 
FE 
FB 
8D CØ 
8F CØ 
8C CØ 


EE OO JO Ob Q 5 = 
O OG GQ Ñ ta e 


TECHNI 





*Unterprogramme zum Diskettensystem-Testprogramm 
*von Dipl.-Ing. Gerhard Berg — 2.3.1985 
E? 

ORG $9000 
* 
SLOT 
* 
*Positionier-Variablen 


EQU $FA :Slot-Nr. * $1Ø 


ZIELSP EQU SLOT+1 ;Zielspur 

AKTSP EQU ZIELSP+1 ;Aktuelle Spur 

BERUHZ EQU AKTSP+1 ;Beruhigungszeit in msec 
SCHRITT EQU BERUHZ+1 ;Schritt-Zåhler 

ALTSP EQU SCHRITT+l ;Alte (vorige) Spur 


* 
*Schreib-/Lese-Variablen 


MUSTER EQU SLOT+1 ;FluBwechsel-Muster 
BYTEL EQU  MUSTER+1 ;Byte-Zåhler 

BYTEH EQU BYTEL+1 (2'er Komplement) 
FEHLERL EQU BYTEH+1 ;Fehler-Zåhler 

FEHLERH EQU FEHLERL+1 

MODE EQU FEHLERL ‚Schreib-Modus 

MODEA EQU MODE ‚absolute Adressierung!! 
INDEX EQU MODE ‚Index-Zähler 


* 

*Interne I/0-Adressen 
TASTDAT EQU $CØØØ 
LAUTSP EQU $CØ3Ø 
TRIGGER EQU $CØ4Ø 

* 
*Disketten-Controller-Adressen 

*Effektive Adresse = Basis-Adresse + Slot-Nr. * $1Ø 


;Tastatur-Daten-Register 
;Lautsprecher 
;Trigger (Utility Strobe) 


CONTR EQU $CØ8Ø ;Controller-Basis-Adresse 
Q6AUS EQU $CØSC :Q6 ausschalten 
Q6EIN EQU $C08D ;Q6 einschalten 
Q7AUS EQU $CØ8E ;Q7 ausschalten 
Q7EIN EQU S$CØ8F :Q7 einschalten 
* 
* Q7 Q6 Funktion 
E, RE 
AUS AUS Lesen 
AUS EIN Schreibschutz prüfen und 


Controller initialisieren 
Schreiben 
Datenregister laden 


* H H H H H H 
H 
H 
= 


*Lese-/Pruf-Routine 
* 


LESEN LDX SLOT ;X = Slot-Nr. * $1Ø 
LDA #Ø 
STA FEHLERL ;Fehler-Zåhler löschen 
STA FEHLERH 
LDY BYTEL ;Y = Byte-Zåhler low Byte 
LESEN1 LDA Q6AUS, X ;Byte lesen 
BPL LESEN1 ;warten bis Byte komplett 
CMP MUSTER ¿mit Muster vergleichen 
BEQ LESEN2 "beide gleich -> Sprung 
INC FEHLERL ;Fehler-Zåhler erhöhen 
BNE LESEN2 
INC FEHLERH 
LESEN2 INY ‚Byte-Zähler erhöhen 
BNE LESEN1 (2'er Komplement) 
INC BYTEH 
BNE LESEN1 ;Byte-Zåhler = Ø — Ende 
RTS 


*Schreib-Routine 


* 
*MODE: 
* 
* 
* 


Bit 7 
Bit 7 
Bit 7 


SCHREIB LDX 


SCHRØ 


BIT 
LDA 
CMP 
STA 
CMP 
PHP 
PLP 
NOP 
NOP 
PHP 
PLP 


x, Bit 
Ø, Bit 
1, Bit 


SLOT 
MODE 
MUSTER 
Q6EIN, X 
Q7EIN, X 
Q6AUS, X 


;X = Slot-Nr. 


Ø -> dauernd schreiben 
1 — 1 Spur schreiben 
l -> 1 Spur + Index 


* $10 
:V Bit setzen = Bit 6 


;A = Flußwechselmuster 
‚Controller initialisieren 


‚Schreiben einschalten + 
. erstes Byte ausgeben 





Vektoren initialisiert, so daB ein neues Pro- 
gramm eingegeben werden kann. 


Danach muB das gesamte BASIC-Pro- 
gramm eingetippt werden. Wenn die Ein- 
gabe der Kommentare eingespart werden 
soll, muB trotzdem zumindest die Zeilen- 
nummer und „REM eingegeben werden, 
da oft (insbesondere beim Anfang von Un- 
terprogrammen) auf diese Zeilen gesprun- 
gen wird. Die Zeilen, die nur einen Dop- 
pelpunkt enthalten, dienen nur der besse- 
ren Übersichtlichkeit und können ohne 
weiteres weggelassen werden. Das As- 
semblerprogramm braucht nicht extra ein- 
gegeben zu werden, da es in Form von 
DATA-Befehlen im BASIC-Programm be- 
reits enthalten ist. Dies wurde so einge- 
richtet, um ein einfaches Laden von Kas- 
sette zu ermöglichen, falls das Disketten- 
system defekt ist. Nach dem Programm- 
start wird über eine Prüfsumme getestet, 
ob die ,DATA"-Befehle, die das Assem- 
blerprogramm enthalten, richtig eingege- 
ben wurden. 

Wer die Arbeit des Eintippens sparen will, 
kann das Programm auch auf der Peeker- 
Sammeldiskette beziehen. 


Zur Anpassung an das verwendete Lauf- 
werk können die folgenden Zeilen geän- 
dert werden: 


— Zeile 10140 definiert die Spurzahl des 
Laufwerks (z.B. 35, 40, 77 oder 80). Der 
maximale Wert für AS ist 80. 

— Zeile 10150 definiert die Anzahl der 
Schrittmotor-Phasen pro Spur. Dieser 
Wert ist normalerweise 2. 


— Zeile 10160 definiert die Beruhigungs- 
zeit (s. Peeker 3/85, S. 20), die das Pro- 
gramm nach jeder Positionierung wartet, 
bevor es mit dem Schreiben oder Lesen 
anfängt. (Hinzu kommt noch die Ausfüh- 
rungszeit des BASIC-Programms.) BZ 
wird in Millisekunden angegeben und darf 
jeden Wert zwischen 1 und 255 haben. Für 
das Apple-Disketten-Laufwerk ist BZ nor- 
malerweise 25. Fürandere Laufwerke muß 
die Beruhigungszeit den Herstelleranga- 
ben entnommen werden. 


— Zeile 10170 definiert den Steckplatz 
(Slot), in dem normalerweise der zu te- 
stende Controller steckt. Der mit SN (1 bis 
7) definierte Steckplatz wird beim Pro- 
grammstart ausgewählt. 


— Zeile 10180 definiert das normalerweise 
zu testende Laufwerk. Das mit LN definier- 
te Laufwerk wird bei Programmstart aus- 
gewählt. LN darf den Wert 1 oder 2 haben. 


9036: 
9038: 
903A: 
9Ø3C: 
9Ø3F: 
9042: 


9044: 
9045: 
9048: 
904A: 
9Ø4D: 


9Ø4E: 
9050: 
9052: 
9054: 
9056: 
9059: 


905B: 
905D: 
SØSF: 
9062: 
9065: 
9066: 
9067: 
9068: 
9069: 
906A: 
906C: 


906E: 
9070: 
9072: 
9074: 
9076: 
9078: 
SØTA: 


9Ø7C: 
SØTF: 
9081: 
9082: 
9084: 
9086: 
9088: 
908A: 


9Ø8C: 
9Ø8F: 
9091: 
9093: 
9095: 
9096: 
9098: 
909A: 
909C: 
9Ø9E: 


909F: 
9ØA1: 
90A4: 
90A6: 
9ØA9: 
SØAB: 
SØAD: 
SØAF: 
9ØB2: 
9ØB5: 
9ØB8: 


SØBA: 


c9 
DØ 
E6 
9D 
DD 
70 


A6 
A9 
85 
C6 
FØ 
AØ 
84 


A6 
BD 
1Ø 
2C 
30 
c9 
DØ 
2C 
2C 
20 
FØ 


A9 


92 
02 
FF 
8D 
8C 
ØA 


00 


8E 


FC 
E2 
FD 
EØ 
FE 
EF 


Ø3 
AA 
8D 
8c 


DE 
EF 


8C 
FB 
AA 
DF 


F4 


FØ 
FC 


ØØ 


CH 
CH 


cø 


cø 


00 


cø 
CH 


cø 


cø 


cØ 
cØ 


cØ 
cØ 
91 


112 
113 
114 
115 
116 
117 
118 
119 
12Ø 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
14Ø 
141 
142 
143 
144 
145 
146 
147 
148 
149 
15Ø 
151 
152 
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 
168 
169 
170 
171 
172 
173 


SCHR1 CMP +$92 ;12 microsec F.w.abstand? 
BNE SCHR2 ;nein -> Sprung 
INC FEHLERH ;4 microsec zusåtzlich 
SCHR2 STA Q6EIN,X ;Byte ausgeben 
CMP Q6AUS,X 
BVS SPSCHR ;1 Spur -> Sprung 


* 
*dauernd schreiben, bis eine Taste gedrückt wird 


NOP 

LDY TASTDAT ‚Taste gedrückt? 

BPL SCHR® "nein -> weiter schreiben 
ENDSCHR LDA Q7AUS,X :Schreiben ausschalten 

RTS 


* 
*1 Spur schreiben 


SPSCHR INC BYTEL ;Byte-Zåhler erhöhen 
BNE SCHR® ; (2'er Komplement) 
INC BYTEH ;Byte-Zåhler <> Ø -> 
BNE SCHR1 ; weiter schreiben 
BIT: MODEA ‚absolute Adressierung!! 
BPL ENDSCHR "kein Index — Ende 


* 
*Index für Umdrehungsdauermessung schreiben 


INDSCHR LDY #3 ‚3 Index Bytes 
INDSCH1 LDA +$AA ;Flußwechselmuster 1010 
STA Q6EIN,X ;Byte ausgeben 
CMP Q6AUS,X 
PHA 
PLA 
PHA 
PLA 
DEY ;Byte-Zåhler erniedrigen 
BEQ ENDSCHR ‚Zähler = Ø — Ende 
BNE INDSCHl :Zåhler > Ø -> weiter 


*Anzahl Bytes pro Spur messen (vom 1. zum 2. Index) 
* 


UMDR LDX SLOT ;X = Slot-Nr. * $1Ø 
LDA #3 
STA INDEX ‚Index-Zähler setzen 
UMDR1 DEC INDEX ‚Index-Zähler erniedrigen 
BEQ UMDR5 ;2. Index -> Sprung 
LDY +Ø :Y = Byte-Zåhler low Byte 
STY BYTEH ;Byte-Zåhler löschen 


x` 
*#warten bis Index vorbei 


UMDR2 LDA Q6AUS, X ;Byte lesen 

BPL UMDR2 ;warten bis Byte komplett 

INY ;Byte-Zåhler erhöhen 

BNE UMDR3 

INC BYTEH 

BMI UMDR5 ; > 32767 Bytes —> Fehler 
UMDR3 CMP +$FF :4 microsec Abstand? 

BNE UMDR2 ;nein = Index -> Sprung 


* 
xwarten auf Index 


UMDR4 LDA Q6AUS,X ‚Byte lesen 
BPL UMDR4 ‚warten bis Byte komplett 
CMP +$AA ; Index? 
BEQ  UMDR1 ;ja -> Sprung 
INY ‚Byte-Zähler erhöhen 
BNE UMDR4 
INC BYTEH 
BPL UMDR4 ; > 32767 Bytes -> Fehler 
UMDR5 STY BYTEL ;Byte-Zåhler low Byte 
RTN RTS 


*Trigger für Spur-Justage mit CE-Disk erzeugen 

*BERUHZ = Mindest-Zeit bis zum nächsten Trigger in msec 
` - 

SPTRIG LDX SLOT ;X = Slot-Nr. * $1Ø 


SPTRIG1 LDA Q6AUS,X ;Byte lesen 
BPL SPTRIG1 ‚warten bis Byte komplett 
BIT TASTDAT ‚Taste gedrückt? 
BMI RTN ‚ja -> Abbruch 
CMP #$FF :Orientierungsburst? 
BNE  SPTRIG1 ‚nein -> auf Burst warten 
BIT LAUTSP "Lautsprecher ansteuern 
BIT TRIGGER ‚Trigger ansteuern 
JSR BERUH ‚warten 
BEQ SPTRIG ;immer springen 


*Positionier-Routine 
* 
POSIT LDA +Ø 


Peeker 8/85 





90BC: 
90BE: 
9ØCØ: 
90C2: 
9003: 
9ØC5: 
9ØC7: 


9ØC9: 
9ØCB: 
9ØCD: 


SØCF: 
90D1: 


90D3: 
9ØD5: 


9ØDT : 


90D9: 
SØDB: 
SØDD: 
SØDE: 
SØDF: 
90E2: 
9ØES: 
90E8: 
90EA: 
90EB: 
90EE: 
90F1: 
90F4: 
90F6: 


90F8: 
90FB: 


90FC: 
SØFE: 
9100: 


9101: 
9103: 
9104: 
9107: 


9108: 
910A: 
91ØC: 
91ØF: 
911Ø: 
9112: 


9113: 
9115: 
9116: 
9118: 
9119: 
911A: 
9110: 
911E: 


o11F: 
9122: 
9124: 
912B: 
912E: 
9136: 


311 Bytes 


85 


85 
38 
E5 
FØ 
BØ 


49 
E6 
90 


69 
C6 


C5 
90 


A5 


A5 
2A 


05 
AA 
BD 
60 


A2 
CA 
DØ 
EA 
38 
E9 
DØ 
60 


Peeker 8/85 


FE 
FC 
FF 


FB 
31 
Ø6 


FF 
FC 
04 


FE 
FC 


FE 
02 


FE 


ØC 
Øl 


FC 
1F 
13 
FF 


FE 
2B 
13 
FE 
C6 


08 


FC 
Ø3 


FA 


80 


FD 
ØA 


. 15 


F8 


12 


FD 


Øl 
F5 


3Ø 
2Ø 


2C 
1F 


90 
91 
91 


90 
91 
91 


91 


CH 


Øl 


28 
1E 


26 
LE 


174 
175 
176 
177 
178 
179 
180 
181 
182 
183 
184 
185 
186 
187 
188 
189 
190 
191 
192 
193 
194 
195 
196 
197 
198 
199 
200 
201 
202 
203 
204 
205 
206 
207 
208 
209 
210 
211 
212 
213 
214 
215 
216 
217 
218 
219 
220 
221 
222 
225 
224 
225 
226 
227 
228 
229 
230 
251 
232 
233 
234 
235 
236 
237 
238 
239 
240 
241 
242 
243 
244 
245 
246 
1D 1C 


247 
1D IC 


STA SCHRITT :Schritt-Zåhler löschen 


POSITØ LDA AKTSP ‚aktuelle Spur laden 
STA ALTSP . und retten 
SEC ‚Zielspur subtrahieren 
SBC ZIELSP ‚ergibt Spurdifferenz in A 
BEQ AMZIEL ;Spurdiff. = Ø — am Ziel 
BCS: POSITI ‚Diff. > Ø - nach außen 


* 
*aktuelle Spur < Zielspur —> nach innen positionieren 


EOR +#$FF :Absolutwert der Spurdiff. 
INC AKTSP ;aktuelle Spur erhöhen 
BCC POSIT2 


* 
*aktuelle Spur > Zielspur -> nach außen positionieren 
POSIT1 ADC +$FE ;1 subtrahieren 

DEC AKTSP ‚aktuelle Spur erniedrigen 
* 
*Spurdifferenz in A mit Schritt-Zähler vergleichen 
POSIT2 CMP SCHRITT 

BCC POSIT3 ;Spurdiff. < Schrittzahl 
* -> mit Spurdifferenz Rampe runterlaufen 

LDA SCHRITT :Spurdiff. > Schrittzahl 
* -> mit Schritt-Zähler Rampe hochlaufen 
* 
*wenn Rampe (Y) >= 12 würde -> Y nicht mehr andern 
POSIT3 CMP #12 


BCS POSIT4 ;A >= 12 -> Y nicht ändern 

TAY ;A < 12 — A nach Y laden 
POSIT4 SEC ;C = 1 -> 

JSR PHASEL ; aktuelle Phase ein 

LDA ZPHEIN,Y ;Einschaltzeit warten 

JSR WARTE 

LDA ALTSP ‚vorhergehende Phase ... 

CLC scs mitc=ß... 

JSR PHASE2 . ausschalten 

LDA ZPHAUS,Y ;Ausschaltzeit warten 

JSR WARTE 

INC SCHRITT ;‚Schritt-Zähler erhöhen 

BNE POSIT® 


* 


AMZIEL JSR BERUH ;Beruhigungszeit warten 


CLC ‚aktuelle Phase aus 
* 
*Schrittmotor Phase ein- bzw. ausschalten 
PHASE1 LDA AKTSP ;aktuelle Spur laden 
PHASE2 AND #3 ; Phasen * maskieren und 
ROL ;... nach links schieben 
* C (Phase aus/ein) ist jetzt Bit ® 
ORA SLOT :Slot-Nr. * $1Ø addieren 
TAX 
LDA CONTR,X ¿Phase ein-/ausschalten 
RTS 
x 
*Beruhigungszeit warten (BERUHZ * 1 msec) 
BERUH LDY BERUHZ 
BERUH1 LDA +1Ø :1Ø * 100 microsec 
JSR WARTE ; = 1 msec warten 
DEY 
BNE BERUH1 
RTS 
* 
*Warte-Routine (verzögert um A * 100 microsec) 
WARTE LDX +18 
WARTEL DEX 
BNE WARTE1 
NOP 
SEC 
SBC zl ;A um 1 erniedrigen 
BNE WARTE 
RTS 
* 
*Zeittabellen für Rampe: Phase ein / Phase aus 
ZPHEIN HEX Ø13Ø28242Ø1E1D1C1C1C1C1C 
LG LG LG 
ZPHAUS HEX 7Ø2C26221F1E1D1C1C1C1C1C 


1C 1C 1C 


ÆTECHNIk 44 


Nachdem das Programm vollståndig ein- 
gegeben ist, wird es mit „SAVE 
DISKTEST“ auf Diskette und/oder 
„SAVE“ auf Kassette gespeichert. Mit Hil- 
fe eines Texteditors sollte zusätzlich die 
Text-Datei DISKTEST.START auf Disket- 
te gespeichert werden. Damit kann das 
Programm einfach durch Eingabe von 
„EXEC DISKTEST.START" geladen und 
gestartet werden. 

Zum Laden und Starten von Kassette wer- 
den die folgenden Befehle benötigt: 
POKE 104,64: POKE 16384,0: LOAD: 
RUN 


2. Bedienung des Programms 


Nach dem Start des Programms wird auf 
dem Bildschirm das Hauptmenü (s. Tabel- 
le 1) mit allen Befehlen des Testpro- 
gramms ausgegeben. Die Befehle werden 
durch Eingabe des zugehörigen Buchsta- 
bens ausgeführt, die in Klein- oder Groß- 
schreibung eingegeben werden können. 


C — Mit dem C-Befehl wird der Steckplatz 
(Slot) ausgewählt, in dem der zu testende 
Controller steckt. Nach Eingabe des „C“ 
springt der Cursor ans Ende der Befehls- 
zeile. Nachdem die Steckplatz-Nummer (1 
bis 7 — ohne RETURN) eingegeben wor- 
den ist, prüft das Programm, ob sich in 
dem angegebenen Steckplatz tatsächlich 
ein Disketten-Controller befindet. Wenn 
nicht, wird eine Fehlermeldung ausgege- 
ben. Wenn sich in dem Steckplatz ein 
Disketten-Controller befindet, wird aus 
dem Inhalt des PROMs eine Prüfsumme 
gebildet. Falls die Prüfsumme nicht 
stimmt, wird ebenfalls eine Fehlernach- 
richt ausgegeben. Bei Controllern mit ab- 
weichendem PROM kann die Fehlermel- 
dung ignoriert oder das Programm für die 
andere Prüfsumme entsprechend abgeän- 
dert werden (Zeile 30080). 


D - Mit dem D-Befehl wird das zu testen- 
de Laufwerk (Drive) ausgewählt. Jedes- 
mal, wenn die Taste „D“ gedrückt wird, 
wird zwischen Laufwerk 1 und 2 hin- und 
hergeschaltet. Das ausgewählte Laufwerk 
wird am Ende der Zeile angegeben. 


E — Mit dem E-Befehl wird das ausgewähl- 
te Laufwerk ein- bzw. ausgeschaltet. Ist 
das Laufwerk ausgeschaltet, so wird es 
durch Drücken der Taste „E“ eingeschal- 
tet. Wird die Taste „E“ das nächste Mal 
betätigt, so wird das Laufwerk wieder aus- 
geschaltet. Am Ende der Zeile ist angege- 
ben, ob das Laufwerk momentan ein- oder 
ausgeschaltet ist. 





0 - Der 0-Befehl Ø dent zur Positionierung 
des Laufwerks auf die Spur 0. Nachdem 
ein Laufwerk das erste Mal eingeschaltet 
wurde, muß es zunächst auf Spur 0 posi- 
tioniert werden, bevor weitere Befehle 
ausgeführt werden können. 


I — Mit dem I-Befehl wird das ausgewählte 
Laufwerk von der momentanen Position 
um jeweils eine Spur nach innen positio- 
niert. Die jeweilige Spurposition wird am 
Ende des P-Befehls ausgegeben. 


A - Der A-Befehl positioniert das ausge- 
wählte Laufwerk um eine Spur nach 
außen. 


P — Mit Hilfe des P-Befehls kann direkt auf 
eine beliebige Spur positioniert werden. 
Nach Drücken der Taste „P“ springt der 
Cursor an das Ende der Befehlszeile. 
Nachdem die gewünschte Spurnummer 
und RETURN eingegeben wurde, positio- 
niert das Laufwerk auf diese Spur. 


H - Mit dem H-Befehl positioniert das 
Laufwerk ständig zwischen zwei beliebi- 
gen Spuren hin und her. Damit kann der 
Positioniermechanismus über längere Zeit 
getestet werden. Nach Drücken der Taste 
„H“ müssen zunächst die beiden Spuren 
eingegeben werden (jeweils mit RETURN 
abgeschlossen). Danach startet das Posi- 
tionieren, das jederzeit durch Drücken ei- 
ner beliebigen Taste abgebrochen werden 
kann. Zum leichteren Oszillographieren 
wird nach jedem zweiten Positionieren ein 
Trigger-Impuls am Utility-Strobe-Ausgang 
(Game-I/O-Stecker Stift 5) erzeugt. 


T - Der T-Befehl testet, ob die Diskette in 
dem ausgewählten Laufwerk schreibge- 
schützt ist oder nicht. 


F - Mit dem F-Befehl wird der beim 
Schreiben und Lesen verwendete Fluß- 
wechselabstand ausgewählt. Zur Wahl 
stehen drei FluBwechselmuster mit den 
drei beim Apple-Aufzeichnungsverfahren 
vorkommenden Flußwechselabständen 
von 4, 8 und 12 Mikrosekunden. Jedes- 
mal, wenn die Taste „F“ gedrückt wird, 
wird auf das nächste Flußwechselmuster 
weitergeschaltet. 


M - Mit dem M-Befehl wird die Betriebsart 
(Modus) für Schreiben und Lesen ausge- 
wählt. Zur Wahl stehen: „dauernd“, „1 
Spur“ und „ganze Diskette“. Jedesmal, 
wenn die Taste „M“ gedrückt wird, wird 
die nächste Betriebsart für Schreiben und 
Lesen vorgewählt. 


10 


L - Der L-Befehl startet das Lesen von der 
Diskette. Nach jedem Lesevorgang wird 
die Anzahl der gelesenen und der davon 
fehlerhaften Disk-Bytes ausgegeben. Vor- 
aussetzung ist natürlich, daß die Diskette 
vorher mit dem gleichen FluBwechselmu- 
ster beschrieben wurde. Je nach ausge- 
wählter Betriebsart hat der L-Befehl unter- 
schiedliche Funktionen: 


— Das Lesen in der Betriebsart „dauernd“ 
bewirkt, daß das Lesen der momentanen 
Spur ständig wiederholt wird, bis es durch 
Drücken einer beliebigen Taste abgebro- 
chen wird. Nach jedem Lesevorgang wird 
das Ergebnis auf dem Bildschirm ausge- 
geben. 


— In der Betriebsart „I Spur“ wird die 
momentane Spur einmal gelesen. 

— In der Betriebsart „ganze Diskette“ wer- 
den alle Spuren der Diskette nacheinander 
einmal gelesen und das Ergebnis für alle 
Spuren auf dem Bildschirm ausgegeben. 
Nachdem alle Spuren gelesen wurden 
oder das Lesen durch Drücken einer be- 
liebigen Taste abgebrochen wurde, er- 
scheint ein Untermenü, das folgende 
Funktionen zuläßt: 


— T - Der T-Befehl bewirkt die Ausgabe 
der Testergebnisse in Textform auf dem 
Bildschirm. Dies ist die gleiche Form, in 
der die Ergebnisse auch während des 
Tests selbst ausgegeben werden. 

— D - Der D-Befehl bewirkt die Ausgabe 
der Testergebnisse auf einem Drucker. 
Das Programm geht davon aus, daß sich 
das Druckerinterface in Steckplatz (Slot) 1 
befindet. Ist dies nicht der Fall, muß Zeile 
25610 im BASIC-Programm entsprechend 
geändert werden. 


— G - Durch den G-Befehl werden die 
Testergebnisse grafisch in Form eines 
Balkendiagramms auf dem Bildschirm 
ausgegeben. Auf der waagerechten Achse 
werden die Spuren aufgetragen und auf 
der senkrechten Achse im logarithmi- 
schen Maßstab die Anzahl der Lesefehler. 
Striche am linken Bildrand markieren die 
Werte für 0, 10, 100 und 1000 Lesefehler. 
— H - Durch Drücken der Taste „H“ ge- 
langt man zurück zum Hauptmenü. 


S — Der S-Befehl des Hauptmenüs startet 
das Schreiben auf die Diskette. Zuvor wird 
geprüft, daß die Diskette nicht schreibge- 
schützt ist, und der Bediener wird gewarnt, 
welche Spuren überschrieben werden. 
Zur Bestätigung, daß wirklich geschrieben 
werden soll, muß ein „J“ (Ja) eingegeben 
werden. 


— In der Betriebsart „dauernd“ wird unun- 
terbrochen geschrieben, bis eine beliebi- 
ge Taste gedrückt wird. Diese Betriebsart 
ist speziell zum Oszillographieren des 
Schreibvorgangs vorgesehen. 


— In der Betriebsart „1 Spur“ wird die 
momentane Spur einmal mit dem ausge- 
wählten FluBwechselmuster beschrieben. 
— In der Betriebsart „ganze Diskette“ wer- 
den alle Spuren einmal beschrieben. 


W - Der W-Befehl ermöglicht abwech- 
selndes Schreiben und Lesen. Die Funk- 
tion in den einzelnen Betriebsarten ist 
gleich dem L-Befehl, außer daß unmittel- 
bar vor jedem Lesen die momentane Spur 
einmal beschrieben wird. 


U — Der U-Befehl dient zur Messung und 
Justage der Umdrehungsdauer (Dreh- 
zahl). Die Abweichung von der nominalen 
Umdrehungsdauer wird ständig numerisch 
und grafisch ausgegeben, bis eine beliebi- 
ge Taste gedrückt wird. Positive Abwei- 
chungen bedeuten, daß die Umdrehungs- 
dauer zu hoch ist bzw. daß sich die Disket- 
te zu langsam dreht. Die Abweichung soll 
zwischen +1 % und -1 % liegen. Die 
optimale Drehzahl liegt bei etwa +0,5 % 
Abweichung. 


J - Der J-Befehl dient als Hilfe beim Über- 
prüfen und Justieren der Spurlage mit Hil- 
fe einer Justage-Diskette (CE-Disk) von 
BASF. Normalerweise braucht man beim 
Arbeiten mit dieser Diskette den Index 
zum Triggern des Oszillographen. Beim 
Apple-Laufwerk, das ja keine Index-Abfra- 
ge hat, kann man dann nur auf das Lese- 
signal triggern, was sehr schwierig ist. Das 
Programm schafft hier Abhilfe, indem es 
einen künstlichen Index generiert. Nach 
Eingabe des J-Befehls wird pro Umdre- 
hung ein Impuls am Utility-Strobe-Aus- 
gang (Game I/O Stecker Stift 5) generiert. 
Zusätzlich wird pro Umdrehung auch ein 
„Klick“ des Lautsprechers erzeugt. 


Vor Ausgabe des Trigger-Signales wird 
noch überprüft, ob sich das Laufwerk auf 
der für die Justage richtigen Spur befindet. 
Bei 5,25-Zoll-Laufwerken ist dies bei ein- 
facher Spurdichte Spur 16 und bei doppel- 
ter Spurdichte Spur 32. Befindet sich das 
Laufwerk nicht auf der richtigen Spur, wird 
eine entsprechende Fehlermeldung aus- 
gegeben. 


Die Kontrolle und Justage der Spurlage 
mit Hilfe der BASF-CE-Disk wird ausführ- 
lich in einem späteren Artikel erläutert. 


Peeker 8/85 


Accelerator Ile macht 
Ihren Apple" II, II Plus oder lle 
dreieinhalbmal schneller. 


TRRERERE RER BER S 


Jetzt laufen VisiCalc®, Apple Writer, PASCAL, BASIC, 
Datenbanken usw. endlich ohne langen Zeitverlust. 
Stecken Sie einfach die ACCELERATOR lle Karte 
in irgendeinen Slot und beobachten Sie, 
wir Ihr Apple loslegt! 

ACCELERATOR lle besitzt seinen eigenen schnellen 
6502 Prozessor und 80 K-Byte Hochgeschwindigkeits- 
speicher, einschließlich einer eingebauten schnellen 
Sprachkarte und schnellem RAM-Speicherplatz für die 
ROM-Sprache. 

Direkt von Pandasoft (Titan Distributor für Deutschland) 
oder bei Ihrem Applehändler. 


panciqys@Ft Dr.-Ing. Eden 


Uhlandstraße 195 : 1000 Berlin 12 - Mo-Fr 10-18 Uhr, Sa 10-13 Uhr 
Telefon: 0 30/31 04 23 - Telex: 185859 


(9) ran ge Druckerinterfaces für Apple II+/e/ 


Printer ang c/lll Interfaces auf dem neuesten 
Stand der Technik. Kompatibel mit allen gängigen Druckern wie: 
APPLE, EPSON, STAR, NEC, OKIDATA usw. Passende Treiber- 


software wird über Dip-Switch ausgewählt. 
Grafikfähiges Druckerinterface 


A ar ple r+ das keine Wünsche mehr offen läßt. 


Über 2 Dutzend Kommandos eier) die volle Kontrolle 
über alle Moglichkeiten Ihres Sege 

Druckers. Jetzt auch mit 

lle Features: Double Hires 

Grafics und 80 Zeichen Dump 

mittels Druckerpuffer nachrustbar 

über Bufferboard. 


Grapp e à 


ten 16 K Druckpuffer, der auf 
32 oder 64 K aufrustbar ist. i 





Besitzt alle Vorzüge des Gianola + 
hat aber zusåtzlich einen integrier- 


Serielles Druckerinterface 
speziell fur den Apple Image- 
writer. 


low 
KNRAPPLER C 


Seriell-nach-Parallel-Wandler für 
den Ilc im Kabel integriert. 


wie Hotlink, jedoch zusätzlich 


Imagewriter Emulation und Grafik 
Software-Diskette. 


panday®ftı.... :-: 


Uhlandstraße 195 - 1000 Berlin 12 - Mo-Fr 10-18 Uhr, Sa 10-13 Uhr 
Telefon: 0 30/31 04 23 - Telex: 185859 








Peeker 8/85 



















ThunderScan." 


Ein neues optisches Lesegeråt, das beliebige 
Vorlagen in MacPaint Ubertrågt: Fotos, Zeich- 
nungen, Landkarten und Illustrationen werden 
in den Apple-Imagewriter eingespannt und von 
einem Lesekopf, der das Farbband ersetzt, 
abgetastet. 


é File Edit Scanner Tools 





ThunderScan"" 





Light Intensity Gauge 


Light q 





Contrast = 110% 


JE 


Brightness = +10 


(Pause) 
æ 









Lines to g0: 186 










@ 32 Graustufen 
@ 80 Punkte/cm Auflösung 
@ UbertragungsmaBstab 25% - 400 % 
@ Vorlagen bis 20 x 25 cm | | 
@ Nachtragliche Veranderung des Kontrasts T 

und der Helligkeit. Sc 


Panday®&ftı....:- 


Uhlandstraße 195 - 1000 Berlin 12 - Mo-Fr 10-18 Uhr, Sa 10-13 Uhr 
Telefon: 0 30/3104 23 - Telex: 185 859 


und die 
FEW 


wir haben die 
Software... 


ALLES FÜR DEN APPLE Il+, Ile, IIc UND MACINTOSH 


ET ing. Eden 


UHLANDSTR. 195 - D- 1000 BERLIN 12 
TEL.:(030)] 310 423 - TELEX: 185859 
Autorisierter gece Fachhändler MICROSOFT. Distributor 








11 





B — Mit Hilfe des B-Befehls erfolgt die 
Rückkehr nach BASIC. Soll das Programm 
anschließend weiterbenutzt werden, so ist 
ein Warmstart mit „GOTO 10000" mög- 
lich. Zu beachten ist, daB nach Verlassen 
des Programms keine DOS-Befehle mehr 
funktionieren, da das DOS aus Sicher- 
heitsgründen „abgekoppelt“ wird. Soll mit 
dem Diskettensystem weitergearbeitet 
werden, so muß das DOS neu gebootet 
werden. 


3. Aufbau und Funktion des Pro- 
gramms 


Das Testprogramm besteht aus einem Ap- 
plesoft-Programm für die Tastatur-Eingabe 
und Bildschirm-Ausgabe sowie einigen 
Assembler-Unterprogrammen für alle zeit- 
kritischen Disketten-Operationen. Das 
BASIC-Programm liegt ab $4000 und die 
Assembler-Unterprogramme ab $9000 im 
RAM. Das BASIC-Hauptprogramm be- 
steht aus den Zeilen 10000 bis 10630. Die 
Zeilen 11000 bis 29240 enthalten die Un- 
terprogramme für die einzelnen Befehle 
und die Zeilen 30000 bis 49090 solche 
Unterprogramme, die von mehreren Be- 
fehlen gemeinsam benutzt werden. In den 
Zeilen 50000 bis 55520 erfolgt die Initiali- 
sierung des Programms. 

Eine ausführliche Beschreibung des Pro- 
grammablaufs ist aus Platzgründen nicht 
möglich. Es sollen deshalb nur einige Er- 
låuterungen zur Ansteuerung des Control- 
lers und Laufwerks gegeben werden. 


Das Ein- bzw. Ausschalten des Laufwerks 
und das Umschalten zwischen den beiden 
Laufwerken erfolgt durch , PEEK" -Befehle 
unmittelbar vom BASIC-Programm aus 
(Zeile 33020 und 33030). Ebenso erfolgt 
die Abfrage des Schreibschutzes durch 
„PEEK“-Befehle (Zeile 36010 und 
36020). Alle anderen Funktionen sind zeit- 
Kritisch und können deshalb nicht direkt im 
BASIC-Programm ausgeführt werden, 
sondern rufen über „CALL“-Befehle As- 
sembler-Unterprogramme auf. Für alle As- 
sembler-Unterprogramme wird in Adresse 
250 ($00FA) die Nummer des Steckplat- 
zes (Slot) * 16 übergeben (Zeile 30090). 
Zum Positionieren wird in Adresse 251 
bis 253 ($00FB bis $00FD) die Zielspur, 
die momentane Spur und die Beruhi- 
gungszeit übergeben (Zeile 34020 und 
34030). Die Positionier-Routine ist im As- 
sembler-Programm in Zeile 171 bis 247 
enthalten. Um die Laufwerke beim Positio- 
nieren unter gleichen Bedingungen wie im 
echten Betrieb zu testen, wurde der Posi- 
tionier-Algoritnmus unverändert von DOS 
3.3 Ubernommen. 


12 


Zum Schreiben wird in Adresse 251 bis 
254 ($00FB bis $00FE) das FluBwechsel- 
muster, die Anzahl der zu schreibenden 
Disk-Bytes (im 2er-Komplement) und der 
Schreibmodus übergeben (Zeile 38030 
und 37020). Die Schreib-Routine ist im 
Assembler-Programm in den Zeilen 68 bis 
119 enthalten. 


a. Die Flußwechselmuster 


Das Testprogramm erlaubt die Auswahl 
zwischen drei verschiedenen Flußwech- 
selmustern, die den drei beim Apple-Auf- 
zeichnungsverfahren vorkommenden Fre- 
quenzen bzw. Flußwechselabständen ent- 
sprechen. Beim Apple-Aufzeichnungsver- 
fahren ist eine Bitzelle 4 usec lang. Die 
Definition der Datenflußwechsel ist die 
gleiche wie bei FM (s. Peeker 3/85, S. 19/ 
20). Im Gegensatz zu FM und MFM wer- 
den beim Apple jedoch überhaupt keine 
Taktflußwechsel geschrieben. Die Bytes, 
die auf die Diskette geschrieben werden, 
werden Disk-Bytes genannt, da sie nicht 
direkt den eigentlichen Daten-Bytes ent- 
sprechen. Um eine kontinuierliche FluB- 
wechselfolge mit 4 usec Abstand zu 
schreiben, muß man demnach ein Disk- 
Byte mit dem Bitmuster 11111111 = $FF 
= 255 verwenden. Das Bitmuster 
10101010 = $AA = 170 erzeugt eine 
kontinuierliche Aufzeichnung mit 8 usec 
Flußwechselabstand. Etwas schwieriger 
wird es bei 12 usec Abstand, was einem 
Bitmuster 100... entspricht, das sich nicht 
in einem 8-Bit-Disk-Byte unterbringen 
läßt. Mit einem einfachen Trick kann man 
aber mit dem Controller 9- oder 10-Bit- 
Disk-Bytes schreiben. Dazu werden die 
ersten 8 Bits in den Controller ausgege- 
ben und der Controller fügt solange Nullen 
hinzu, bis das nächste Disk-Byte ausge- 
geben wird. Das Bitmuster 10010010 = 
$52 = 146 erzeugt die Aufzeichnung 
100100100 und damit das gewünschte 
Muster, wenn die Disk-Bytes im Abstand 
von 36 usec (anstelle 32 usec) an den 
Controller ausgegeben werden. Bild 1 bis 
3 zeigt die Aufzeichnung für die drei FluB- 
wechselmuster. 


b. Die Spurkapazität 


Die nominale Spurkapazität einer Apple- 
Diskette berechnet sich aus folgender 
Formel: 

Ks=U:B 

In der Formel ist Ks die (unformatierte) 
Kapazität pro Spur in Disk-Bits, U ist die 
Umdrehungsdauer der Diskette und B ist 
die Zeitdauer einer Bitzelle. 

Bei nominaler Drehzahl ist die Umdre- 


hungsdauer U = 200 msec = 200 000 
usec. 


Der Original-US-Apple hat eine Oszillator- 
frequenz von f = 14,31818 MHz, was ei- 
ner Periodendauer von T = 1 : f = 69,841 
nsec entspricht. Der Prozessortakt wird 
durch 14fache Teilung erzeugt und hat 
somit eine Periodendauer von 14: T = 978 
nsec. Jeder 65. Prozessortakt wird jedoch 
um 2 Oszillatorperioden verlängert und ist 


somit 16 : T = 1117 nsec lang. Damit 


beträgt die mittlere Dauer eines Prozes- 
sortaktes (64 :14-T+ 16:T):65 = 912: 
T : 65 = 980 nsec. Die Länge einer Bitzel- 
le ist schließlich 4 Prozessortakte und da- 
mit im Mittel 4 - 912 - T : 65 = 3648 : T : 65 
= 3919,7 nsec = 3,9197 usec. 

Damit beträgt die Kapazität einer Spur Ks 
= 200 000 : 3,9197 = 51024 Disk-Bits. 
Für 8-Bit-Disk-Bytes ist damit die Kapazi- 
tät pro Spur 51024 : 8 = 6378 Disk-Bytes 
und für 9-Bit-Disk-Bytes 51024 : 9 = 5669 
Disk-Bytes. 


c. Das Schreiben 


Der Schreibmodus wird durch Bit 7 und 6 
in Adresse 254 ($00FE) definiert. Ein Wert 
von 64 ($40) bedeutet, daß eine ganze 
Spur geschrieben werden soll. Um sicher- 
zustellen, daß auch bei Drehzahlschwan- 
kungen eine vollständige, in sich ge- 
schlossene Spur entsteht, werden 10 % 
mehr Disk-Bytes geschrieben. An der 
Stelle, wo das Schreiben ausgeschaltet 
wird, entsteht eine sog. Stoßstelle. Bild 4 
zeigt ein Beispiel, wie eine solche StoB- 
stelle entsteht. Der Abstand t zwischen 
zwei gleichen FluBwechseln kann im Bei- 
spiel — je nach momentaner Umdrehungs- 
dauer — jeden Wert zwischen 0 und 16 
usec haben. Je nachdem, welchen Wert t 
hat, tritt beim Lesen der Stoßstelle ein 
Fehler auf oder nicht. 

Ein Wert von 0 für den Schreibmodus be- 
deutet, daß ununterbrochen geschrieben 
werden soll, bis eine Taste gedrückt wird. 


d. Das Lesen 


Beim Lesen werden in Adresse 251 bis 
253 ($00FB bis $00FD) das Flußwechsel- 
muster und die Anzahl der zu lesenden 
Disk-Bytes übergeben (Zeile 38030). Die 
Anzahl der zu lesenden Disk-Bytes ist ge- 
nau gleich der nominalen Spurkapazität. 
Das Assembler-Unterprogramm zum Le- 
sen befindet sich in den Zeilen 47 bis 69. 
Bei Rückkehr vom Unterprogramm wird in 
Adresse 254 und 255 ($00FE und $00FF) 
die Anzahl der fehlerhaft gelesenen Disk- 
Bytes übergeben. Um die Software zu ver- 


Peeker 8/85 





einfachen, wird beim Lesen nicht auf den 
Spuranfang synchronisiert, sondern das 
Lesen beginnt da, wo sich der Schreib-/ 
Lesekopf gerade befindet. Das Programm 
liest also auch die beim Abschalten des 
Schreibens entstandene StoBstelle, was 
håufig ein fehlerhaftes Disk-Byte zur Folge 
hat. Aus diesem Grund ist ein Ergebnis mit 
einem Lesefehler praktisch als fehlerfrei 
anzusehen und wird in der grafischen Dar- 
stellung auch so ausgegeben. 


e. Die Umdrehungsdauer 


Die Messung der Umdrehungsdauer er- 
folgt indirekt über eine Messung der Spur- 
kapazitàt. Für ein einwandfreies Funktio- 
nieren der Software (insbesondere von 
Nibble-Kopierern) ist es erforderlich, daß 


mindestens die nominale Spurkapazität 
auf die Diskette paßt. Für alle Euro-Apples, 
die mit einer von US-Apples etwas abwei- 
chenden Oszillatorfrequenz arbeiten, be- 
deutet das, daß die nominale Umdre- 
hungsdauer nicht 200 msec beträgt, son- 
dern dann erreicht ist, wenn 6378 Disk- 
Bytes auf eine Spur passen. Deshalb darf 
die Umdrehungsdauer auch nicht — falls 
vorhanden — mit der Stroboskobscheibe 
oder mit einem Digitalzähler auf genau 200 
msec eingestellt werden. 


Für die Messung der Spurkapazität wird 
zunächst eine ganze Spur mit 4 usec FluB- 
wechselabstand (Flußwechselmuster 255 
= $FF) beschrieben. Unmittelbar danach 
werden drei Disk-Bytes mit 8 usec Fluß- 
wechselabstand als Index aufgezeichnet. 


|[——— e s-Byte——— h. À | 


Í Bitzelle 
Daten ($FF) 
Magnetisierung 


Leseimpulse 


E | 


Bild 1: Aufzeichnung mit 4 usec FluBwechselabstand 


Me Disk-Byte 


|Bitzelle 
| 
Daten ($AA) 


Magnetisierung 


Leseimpulse 


KG 


Bild 2: Aufzeichnung mit 8 usec FluBwechselabstand 


Peeker 8/85 


TN 
re re re rs re oe 


s 


| 

l 

| 
ro 
=”, 


| 
| 
| 
| Daten ($52) 


Magnetisierung 


Leseimpulse 


1. Umdrehung 
2. Umrehung 


resultierende 
Magnetisierung 


Lesesignal 


Daten 


| Bitzelle 


1 


| 
111010. 110101110910 


e e Ee r — 


Technik a 


Zum Erzeugen deser Aufzeichnung wird 
der Schreiomodus zu 192 ($C0) gesetzt. 
Nach dem Schreiben wird gelesen und die 
Anzahl der Disk-Bytes von Index zu Index 
gezåhlt. Die zugehörige Assembler-Routi- 
ne ist in den Zeilen 122 bis 152 enthalten. 
Bei der Ruckkehr in das BASIC-Programm 
enthålt Adresse 252 und 253 ($00FC und 
$00FD) die Anzahl der Disk-Bytes. Adres- 
se 254 ($00FE) enthålt eine Fehlermarke. 
Wurde der Index nicht gefunden, weil z.B. 
keine Diskette eingelegt war oder weil der 
Schreib- oder Lesekreis defekt war, dann 
ist die Fehlermarke ungleich null. Das BA- 
SIC-Programm gibt dann anstelle der Ab- 
weichung das Wort „Fehler“ aus. Voraus- 
setzung für die Messung der Umdre- 
hungsdauer ist also, daß der Schreib-/ 
Lesekreis einwandfrei funktioniert. 
L 





Disk-Byl ta ng 


E 


Bild 3: Aufzeichnung mit 12 usec FluBwechselabstand 


1 0 1 0 1 1 0 1 


Bild 4: Beispiel einer StoBstelle bei einer Aufzeichnung von 


8 usec FluBwechselabstand 


13 


14 


Tabelle 1: 
APPLE II DISKETTENSYSTEM TEST 


Controller-Steckplatz (Slot): 6 
Laufwerk (Drive): 1 

Laufwerk ein-/ausschalten: aus 
Positionieren auf Spur Ø 

1 Spur nach innen 

1 Spur nach auBen 

Positionieren auf Spur: 

hin und her zwischen Spur 


= J > H J O A 


Schreibschutz testen 
Flußwechselabstand: 4 microsec 
Schreib/Lese Modus: 1 Spur 
Schreiben 

Lesen 

abwechselnd schreiben und lesen 


m C (OS J H 


Umdrehungsdauer messen 
Spur-Justage: Trigger generieren 
Ausgang nach BASIC 


wac 


DISKTEST 


10000 REM Testprogramm für Apple II Diskettensysteme 

10010 REM von Dipl.-Ing. Gerhard Berg - 2.3.1985 

10020 : 

10100 POKE 35,24: IF WS > ® GOTO 10210 

10110 HOME : IF PEEK (104) < 64 GOTO 29100 

10120 HM = 36864: HIMEM: HM 

10130 : 

10140 AS = 

10150 PH 

10160 BZ 

10170 SN 

10180 LN 

10190 : 

10200 GOSUB 50000:F = Ø: GOSUB 30000 

10210 GOSUB 490700: IF F > Ø GOTO 10610 

10220 : 

10500 REM Hauptschleife 

10510 GOSUB 45000: GOSUB 42000:F = Ø 

10520 FOR B = 1 TO MB: IF MID$ (BT$,B,1) = EZ$ GOTO 10540 

10530 NEXT :B = 9 

10540 IF FB(B) > Ø AND SN = Ø THEN F 1: GOTO 10610 

10550 IF FB(B) > 1 AND AE = @ THEN F = 2: GOTO 10610 

10560 IF FB(B) > 2 AND S(SN,LN) < Ø THEN F = 3: GOTO 10610 

10570 IF FB(B) < 4 GOTO 10600 

10580 GOSUB 36000: IF SS = 1 THEN F = 4: GOTO 10610 

10590 GOSUB 41000: IF EZ$ = "N" GOTO 10500 

10600 ON B GOSUB 11000,12000,13000,14000,15000,16000,17000, 
18000 ,40020,20000,21000,22000,23000,25000,25000, 
40020 27000. 28000 , 29000 

10610 IF F > Ø THEN GOSUB 40000 

10620 GOTO 10500 

10630 : 

11000 REM Steckplatz auswàhlen 

11010 IF SN > Ø THEN AE = Ø: GOSUB 33000 

11020 Bl = 1: GOSUB 44000: GET EZ$:SN = ASC (EZ$) - 48 

11030 IF SN < 1 OR SN > 7 THEN PRINT BEL$;: GOTO 11020 

11Ø4Ø GOSUB 42000: PRINT "Bitte warten!"; 

11050 GOSUB 30000: GOSUB 42000: GOTO 31000 

11060 : 

12000 REM Laufwerk auswàhlen 

12010 LN = 1 + NOT (LN — 1): GOTO 32000 

12020 : 

13000 REM Laufwerk ein-/ausschalten 

13Ø1Ø AE = NOT AE: GOTO 33000 

13Ø2Ø : 

14000 REM Nach Spur Ø positionieren 

14010 S(SN,LN) = MS + 4:S = 0: GOTO 34000 

14020 : 

15000 REM 1 Spur nach innen 

15010 S = S(SN,LN) + 1: IF S > MS GOTO 40020 

15020 GOTO 34000 

15030 : 

16000 REM 1 Spur nach auBen 

16010 S = S(SN,LN) — 1: IF S < Ø GOTO 40020 

16020 GOTO 34000 

16030 : 

17000 REM Positionieren 

17010 Bl = 7: GOSUB 44000: GOSUB 35000 

17020 IF S(SN,LN) < Ø THEN HV = S: GOSUB 14000:S = HV 

17030 GOTO 34000 


35: REM Anzahl Spuren 

2: REM Phasen pro Spur 

25: REM Beruhigungszeit in msec 
6: REM Steckplatz-Nr. 

1: REM Laufwerk-Nr. 


17040 : 


18000 
18010 
18020 
18030 
18040 
18050 
18060 
18070 
18080 
18090 
20000 
20010 
20020 
20030 
20040 
21000 
21010 
21020 
21030 
21040 
21050 
22000 
22010 
22020 
22030 
23000 
23010 
23020 
23030 
23100 
23110 


REM Hin und her positionieren 

Bl = 8: GOSUB 44000 

GOSUB 35000:SH(1) = S: PRINT " und "; 
GOSUB 35000:SH(2) = S: GOSUB 43000 

IF S(SN,LN) < Ø THEN GOSUB 14000 

FOR I = 1 TO 2:S = SH(I): GOSUB 34000 
IF PEEK (TD) > 127 GOTO 18080 

NEXT I:HV = PEEK (TG): GOTO 18050 

Bl = 8: GOSUB 44000: GOTO 42000 


REM Schreibschutz testen 

GOSUB 36000: PRINT "Diskette ist "; 
IF SS = Ø THEN PRINT "nicht "; 
PRINT "schreibgeschützt.";: RETURN 


REM FluBwechselabstand wåhlen 

FM = FM + 1: IF FM = 4 THEN FM = 1 

AB = KS: IF FM = 3 THEN AB = INT (AB * 8 / 9) 
Bl = 11: GOSUB 44000 

PRINT SPC( FM < 3);FM * 4;" microsec": RETURN 


REM Schreib-/Lese-Modus wåhlen 
MO = MO + 1: IF MO = 4 THEN MO = 1 


Bl = 12: GOSUB 44000: PRINT MO$(MO);: RETURN 


REM Schreib-Funktion 
IF MO < > 2 THEN GOSUB 43000 
ON MO GOTO 231ØØ,37ØØØ,232ØØ 


REM Dauernd schreiben 
SM = Ø:Fl = FM:Al = AB: GOSUB 37020: GOTO 42000 


23120 : 


23200 
23210 
23220 
23230 
23240 
25000 
25010 
25020 
25100 
25110 
25120 
25130 
25140 
25150 
25200 
25210 
25220 
25230 
25240 
25300 
25310 
25320 
25330 
25340 
25350 
25360 
25370 
25400 
25410 
25420 
25430 
25440 
25450 
25460 
25470 
25480 
25500 
25510 
25520 
25530 
25540 
25600 
25610 
25620 
25630 
25640 
25650 
25660 
25670 
25680 
25690 
25700 
25710 


REM Ganze Diskette beschreiben 

FOR S = @ TO MS: GOSUB 34000: GOSUB 37000 
IF PEEK (TD) > 127 GOTO 42000 

NEXT : GOTO 42000 


REM (Schreiben und) lesen 
ON MO GOTO 251ØØ,252ØØ,253ØØ 


REM Dauernd (schreiben und) lesen 
GOSUB 43000: POKE 35,22: HOME 
GOSUB 25200: PRINT 

IF PEEK (TD) < 128 GOTO 25120 
GOTO 48000 


REM Einmal (schreiben und) lesen 

IF B = 15 THEN GOSUB 37000 

GOSUB 39000: PRINT "Bytes gelesen: ";AB; 
PRINT " — Fehler: ";LF;: RETURN 


REM Ganze Diskette (schreiben und) lesen 
GOSUB 43000: POKE 35,22: HOME : GOSUB 47000 
FOR S = Ø TO MS: GOSUB 34000 

IF B = 15 THEN GOSUB 37000 

GOSUB 39000:LF(S) = LF: GOSUB 46000 

IF PEEK (TD) > 127 THEN TS = S: GOTO 25400 
NEXT :TS = MS 


GOSUB 42000: VTAB 23: POKE 35,24 

PRINT "T — Text-Ausgabe G — Grafik-Ausgabe" 
PRINT "D — Drucker-Ausgabe H - Hauptmenü"; 
GOSUB 45000: FOR I = 1 TO 4 

IF EZ$ = MID$ ("TDGH",I,1) GOTO 25460 

NEXT : PRINT BEL$;: GOTO 25430 

TEXT : POKE 35,22 + (I = 4) * 2: HOME 

ON I GOTO 255ØØ,256ØØ,258ØØ,49ØØØ 


REM Text-Ausgabe 

GOSUB 47000 

FOR S = Ø TO TS: GOSUB 46ØØØ: NEXT 
GOTO 2543Ø 


REM Drucker-Ausgabe 

PR# 1: POKE 35,2Ø 

PRINT B$(11);" ";: GOSUB 21040: PRINT 
FOR I = 1 TO SP: PRINT "Spur Fehler "; 
NEXT : PRINT 

FOR I = Ø TO ZE - 1 

FOR J = Ø TO MS STEP ZE 

S= I+ J: IF S > TS GOTO 25700 

LF = LF(S):L1 = LEN ( STR$ (LF)) 

PRINT " ";S; SPC( 3 + (S < 10));LF; SPC( 8 — L1); 
NEXT : PRINT : NEXT 

IN# Ø: PR# Ø: GOTO 25430 





Peeker 8/85 


BUCH-SHOP 


Apple DOS 3.3 

von Ulrich Stiehl 

2. Aufl. 1984, 203 S., kart., 
DM 28,- 


Dies ist die erste deutschspra- 
chige Darstellung des Disket- 
tenbetriebssystems DOS 3.3 
für den Apple II Plus/lle, die 
sich sowohl an Applesoft- als 
auch an Assembler-Program- 
mierer wendet. Sinngemäß ist 
das Buch zweigeteilt: 

Der erste Teil behandelt aus- 
führlich die dem Applesoft-Pro- 
grammierer zur Verfugung ste- 
henden DOS-Befehle, wobei 
die Textfiles wegen ihrer gro- 
Ben Bedeutung und der ver- 
gleichsweise komplizierten 
Handhabung besonders darge- 
stellt werden. Viele Textfile- 
Tricks werden hier zum ersten- 
mal geschildert. 

Aber auch im zweiten Teil fin- 
det der reine Applesoft-Pro- 
grammierer insbesondere in 
dem Kapitel , Vermischte Tips, 
Tricks und Patches“ zahlreiche 
Anregungen. Im übrigen ist der 
zweite Teil für Assembler-Pro- 
grammierer gedacht. Neben ei- 
ner detaillierten Beschreibung 
der DOS-Interna enthålt dieser 
Teil elf vollståndige RWTS-An- 
wenderprogramme - z. B. 
CPM-Refiner, DOS-lose Da- 
tendisk, TSL-Maker, File- 
Reader, Pseudo-Disk-Driver 
und Fastbrun-Routine —, die 
Techniken enthüllen, die bis- 
lang noch niemals publiziert 
worden sind. Dieses DOS- 
Buch ist deshalb der unent- 
behrliche Begleiter für jeden 
Apple-Programmierer. 


Apple II 

Basic Handbuch 
von Douglas Hergert 
304 Seiten, 116 Abb. 
DM 32,- 


Das Buch ist als Nachschlage- 
werk konzipiert, daß seinen 
Platz neben jedem APPLE II, 
II+ und Ile haben sollte. Es 
richtet sich an Anfänger und 
fortgeschrittene Program- 
mierer. 


Aus der Praxis heraus präsen- 
tiert der Autor Tips und Vor- 
schläge, die das Programmie- 
ren leichter und zugleich effi- 
zienter machen. Alle Applesoft- 
und Integer-BASIC-Begriffe 
sind alphabetisch aufgelistet 
und werden eingehend erklärt. 


Peeker 8/85 





Dazu werden alle DOS-Befehle 
(neben vielen Begriffen der 
Computerterminologie) vorge- 
stellt. 

Beispielprogramme zeigen 
dem Nutzer, wie jeder Befehl 
funktioniert und helfen, die rich- 
tige Anwendung zu üben. Un- 
ter anderem lernt der Leser 
den besten Weg, um FOR/ 
NEXT-Schleifen und IF/THEN- 
Entscheidungen für seine 
Zwecke einzusetzen. 

Durch die präzise und leicht 
verständliche Sprache des Au- 
tors werden auch schwierige 
Befehle einfach in der Anwen- 
dung. 


Apple Maschinen- 
sprache 


von Don und Kurt Inman 
1984, 208 S., zahlr. Abb. und 
Tabellen, DM 49, — 





Dieses Buch ist wahrscheinlich 
die beste Einführung in die 
6502-Programmierung für den- 
jenigen Assembler-Anfänger, 
der zuvor noch nie ein Maschi- 
nenprogramm geschrieben 
hat. 

Aus dem Inhalt: 

Applesoft II BASIC — kurzge- 
faßt — Alles über Zeichen — AL 
les über Speicher — Alles über 
Maschinenbefehle — Maschi- 
nenprogramme mit BASIC ein- 
geben — Graphik — Text — Ton — 
Arithmetik — Was tun mit den 
Maschinenprogrammen 


Apple II 

leicht gemacht 

von Joseph Kascmer 

1984, 185 S., zahlr. Abb., kart., 
DM 28,- 


Dies ist ein Buch, wie es sich 
jeder Apple-Anfånger nur wün- 
schen kann: Schrittweise, 
leichtverståndliche Anleitung 
zum Umgang mit dem Apple 
mit einigen durchsichtigen, un- 
komplizierten Beispielen in Ap- 
plesoft, die ihn nicht Abschrek- 
ken, sondern ermutigen sollen, 
sich mit dem Geråt nåher ver- 
traut zu machen. Damit ist „Ap- 
ple Il leicht gemacht“ das idea- 
le Einsteigerbuch für den rei- 
nen Anwender, der nicht nur 
„auf den Knopf drücken“, son- 
dern zumindest einige Details 
aus der Black Box namens Ap- 
ple erfahren will. 








Aus dem Inhalt: 

Kontrolle des Geräts — Schrei- 
ben und Zeichnen auf dem 
Bildschirm — Geheimnisvolle 
Abläufe: Programme — Ver- 
schiedene Eingriffsmöglichkei- 
ten — Mobile Speicher: Disket- 
ten — Kontrollmöglichkeiten — 
Das Innenleben 


Apple Assembler 
Tips und Tricks 


von Ulrich Stiehl 
1984, 226 S., 3 Abb., kart., 
DM 34,— 


„Apple Assembler“ wendet 
sich an alle, die bereits Anfän- 
gerkenntnisse der 6502-Pro- 
grammierung haben - z. B. 
aufgrund des Buches „Apple 
Maschinensprache“ — und nun- 
mehr ein Nachschlagewerk für 
ihren Apple II Plus/lle/lic su- 
chen, in dem alle wichtigen 
ROM-Routinen sowie eine 
Vielzahl sonstiger Hilfspro- 
gramme in einer systemati- 
schen Form zusammengestellt 
werden. Insgesamt umfaßt die- 
ses Buch über 40 Utilities, dar- 
unter mehrere völlig neuartige 
Programme wie Double-Lores, 
Double Hires, Screen-Format 
U. a. 

Der erste Teil enthàlt ein Repe- 
titorium der wichtigsten Befeh- 
le, Adressierungsarten und 
sonstigen Besonderheiten des 
6502. 

Im zweiten Teil werden alle 
Adressen des Monitors zusam- 
mengestellt, die für Assembler- 
Programmierer von Nutzen 
sein können. Darüber hinaus 
findet der Leser Unterroutinen 
für hexadezimale Addition/ 
Subtraktion/Multiplikation/Divi- 
sion, Binär-Hex-ASCII-Um- 
wandlung usw. 

Der dritte Teil befaßt sich mit 
der Speicherverwaltung der 
Language Card und der lle- 
64K-Karte und enthält Move- 
Programme zum Verschieben 
von Daten in die und aus der 
Language Card sowie der 64K- 
Karte. 


Der vierte Teil ist dem Ap- 
plesoft-ROM gewidmet und li- 
stet eine große Anzahl nützli- 
cher Interpreter-Adressen. Bei 
den Utility-Programmen liegt 
das Schwergewicht auf Fließ- 
kommamathematik einschließ- 
lich Print Using. 

Der letzte Teil behandelt den 
Text- und Graphikspeicher. 
Neben einem professionellen 
Maskengeneratorprogramm 
werden auch Routinen zur 
Double-Lores- und Double-Hi- 
res-Grafik vorgestellt. 


Arbeiten mit dem 
Macintosh 


von N. Hesselmann 
416 Seiten, 320 Abb. DM 54, — 


Das Buch erklärt den Umgang 
mit dem Macintosh von Grund 
auf, wobei auch auf elementare 
Dinge eingegangen wird, wie 

z. B. die Benutzung der Tasta- 
tur und der Maus, das Einlegen 
von Disketten und den System- 
start. Ganz besonderes Augen- 
merk wird auf die Erklärung der 
speziellen Software-Umge- 
bung des Macintosh gelegt, 
wobei das Menü- und Fenster- 
konzept sowie das Anwählen 
durch Piktogramme gekenn- 
zeichneter Funktionen klar dar- 
gestellt wird. 


Der Umgang mit den Program- 
men MacPaint und MacWrite 
wird erläutert; dies geschieht 
teilweise anhand von Beispie- 
len, die leicht nachvollzogen 
werden können. Ein umfangrei- 
ches Kapitel ist dem für den 
Macintosh erhältlichen Micro- 
soft-BASIC gewidmet. 


BASIC Ubungen 

für den Apple 

von J. P. Lamoitier 

1983, 252 S., zahlr. Abb., kart., 
DM 38,- 

Das Buch ist konzipiert, allen 
Apple-Anwendern Applesoft- 
BASIC durch praktische Ubun- 
gen an Hand von reellen Pro- 
grammen beizubringen. Daten- 












verarbeitung, Statistik, kom- 
merzielle Programme, Spiele 
und vieles mehr. Jede Ubung 
beinhaltet eine Beschreibung 
der Problemstellung, eine Ana- 
lyse der Lösungsmöglichkei- 
ten, ein Flußdiagramm und ein 
fertiges Programm samt Pro- 
belauf. 


Aus dem Inhalt: 

Ihr erstes BASIC-Programm — 
FluBdiagramme — Ubungen mit 
Integerzahlen — Elementare 
Beispiele aus der Geometrie — 
Allgemeine Ubungen aus der 
Datenverarbeitung — Mathema- 
tische Berechnungen — Kauf- 
månnische Berechnungen — 
Spiele — Operations Research 
— Statistik 


Apple ProDOS 
für Aufsteiger 
Band 1 


von Ulrich Stiehl 
1984, 202 S., kart., DM 28,- 


ProDOS ist das neue „profes- 
sionelle DOS" (Professional 
Disk Operating System) für den 
Apple lle sowie den mit einer 
Language Card ausgestatteten 
Apple II Plus. Band 1 befaßt 
sich mit den theoretischen 
Grundlagen von ProDOS, der 
internen und externen Spei- 
cherorganisation und enthålt 
grundlegende Beispielpro- 
gramme für Assembler-Pro- 
grammierer sowie generelle 
Untersuchungen zum BASIC- 
SYSTEM. Da ProDOS über er- 
heblich vielfältigere und lei- 
stungsfähigere, zugleich je- 
doch erheblich kompliziertere 
Dateistrukturen verfügt, sind 
theoretische Kenntnisse von 
ProDOS unabdingbar, wenn 
man die Features von ProDOS 
voll ausschöpfen will. 

Aus dem Inhalt: 

Ein erster Überblick — ProDOS 
und DOS 3.3 — Interne Spei- 
cherorganisation — Externe 
Speicherorganisation — MLI 
(Machine Language Interface) 
— ProDOS für Applesoft-Pro- 
grammierer 


19 








16 


25720 
25800 
25810 
25820 
25830 
25840 
25850 
25860 
25870 
25880 
25890 
25900 
25910 
25920 
25930 
25940 
25950 
25960 
25970 
27000 
27010 
27020 
27030 
27040 
27050 
27060 
27070 
27080 
27090 
27100 
27110 
27120 
27130 
27140 
27150 
27160 
27170 
27180 
27190 
27200 
27210 
27220 
27230 
28000 
28010 
28020 
28030 
29000 
29010 
29020 
29100 
29110 
29120 
29130 
29140 
29200 
29210 
29220 
29230 
29240 
30000 
30010 
30020 
30030 
30040 
30050 
30060 
30070 
30080 
30090 
30100 
30110 
31000 
31010 
31020 
31030 
32000 
32010 
32020 
33000 
33010 
33020 
33030 
33040 
33059 


REM Grafik-Ausgabe 
VTAB 21:Hl = INT (MS / 40) + 1:H2 = 5 * Hl 
FOR I = @ TO TS STEP H2 
HTAB 2 + I * 6 / (7 * Hl): PRINT I;: NEXT 
HGR : HCOLOR= 3:SF = 152 / LOG (AB) 
FOR I = Ø TO 3:Y = 152 - LOG (10 1 I) * SF 
HPLOT Ø,Y TO 2,Y: NEXT 
FOR I = @ TO TS STEP Hl 

= 10 + I * 6 / Hl: HPLOT X,153 TO X,154 

= INT (I / H2) * H2 THEN HPLOT TO X,157 


=6 + Hl:X = X1: HPLOT X1,152 
FOR S = 0 TO TS 
LF = LF(S): IF LF = Ø THEN LF = 1 
Y = 152 — L0G (LF) * SF: HPLOT TO X,Y 
X = X + 6 / Hl: HPLOT TO X,Y: NEXT 
HPLOT TO X,152: HPLOT TO X1,152: GOTO 25430 


REM Umdrehungsdauer messen 
GOSUB 43000: POKE 35,22: HOME 
HGR : HCOLOR= 3:Y = 0 
X1 = 2 * KS / 100: REM 1% 
FOR X = 140 - X1 TO 140 + X1 STEP X1 
HPLOT X,@ TO X,154: NEXT 
VTAB 21: HTAB 2: PRINT "—1%"; TAB( 38);"+1%"; 
IF PEEK (TD) > 127 GOTO 48000 
SM = 192:A1 = KS * 1.1:F1 = 1: GOSUB 37020 
CALL UR: VTAB 22: HTAB 18: CALL ZL 
IF PEEK (254) = Ø GOTO 27120 
PRINT "Fehler";: GOTO 27070 
BY = PEEK (252) + 256 * PEEK (253) + 1 
INT ((BY — KS) * 1000 / KS + 0.5) / 10 
= ABS (UT):UT$ = STR$ (UA): IF UA > 20 GOTO 27110 
IF UA > Ø AND UA < 1 THEN UT$ = "Ø" + UT$ 
UT$ = VZ$( SGN (UT) + 2) + UT$ 
IF UT = INT (UT) THEN UT$ = UT$ + ".Ø" 
PRINT UT$:"Z": 
X = 140 + (BY — KS) * 2: IF X < Ø THEN X = Ø 
IF X > 279 THEN X = 279 
HPLOT X,Y:Y = Y + 1: IP Y < 155 GOTO 27070 
GOTO 27020 


REM Trigger für Spur-Justage generieren 
IF S(SN,LN) < > JS THEN F = 7: RETURN 
GOSUB 43000: POKE 253,190: CALL JR: GOTO 42000 


REM Ausgang nach BASIC 
HOME : POP : END 


PRINT "Bitte geben Sie ein:": PRINT 

PRINT "POKE 1Ø4,64": PRINT "POKE 16384,Ø" 

PRINT : PRINT "und laden Sie das Programm neu!" 
GOTO 29210 


HOME : PRINT "Fehler in 'DATA'- Befehlen!" 
PRINT CHR$ (7);: CLEAR : END 


REM Steckplatz (Slot) auswählen 

F$(5) = LEFT$ (F$(5),35) + STR$ (SN) + "!" 
PA = 49152 + 256 * SN: FOR I = 1 TO 7 STEP 2 
IF PEEK (PA + I) = CE(I) GOTO 30050 

SN = @:F = 5: RETURN 

NEXT :SA = 49280 + 16 * SN 

PS = Ø: FOR I = Ø TO 255 

PS = PS + PEEK (PA + I): NEXT 

IF PS < > 31558 THENF=6 

POKE 25Ø,SN * 16 

RETURN 


REM Steckplatz Nr. ausgeben 
IF SN = ® THEN RETURN 
Bl = 1: GOSUB 44000: PRINT SN 


REM Laufwerk auswählen 
Bl = 2: GOSUB 44000: PRINT LN: GOSUB 34050 


REM Motor ein-/ausschalten 

Bl 3: GOSUB 44000: PRINT AE$(AE) 

HV PEEK (SA + 8 + AE): REM Motor ein/aus 

HV PEEK (SA + 9 + LN): REM Laufwerk 1 / 2 
REM In obigen Befehlen keine "POKEs" verwenden! 
RETURN 


33069 : 


34000 


REM Positionieren nach Spur 'S' 





IF S = S(SN,LN) THEN RETURN 

POKE 251,5 » PH: POKE 252,S(SN,LN) * PH 

POKE 253,BZ: CALL PR 

S(SN,LN) = S: IF B > 13 THEN RETURN 

REM Spur # ausgeben 

Bl = 7: GOSUB 44000: IF S(SN,LN) < Ø THEN RETURN 
PRINT S(SN,LN);: RETURN 


REM Spur-Nr. eingeben 

H = POS (0) + 1: GOTO 35030 

PRINT BEL$; 

VTAB V: HTAB H: CALL ZL 

INPUT "";EZ$: IF EZ$ = "" GOTO 35020 

S = VAL (EZ$): IF S < Ø OR S > MS GOTO 35020 

IF INT (S) < > S OR STR$ (S) < > EZ$ GOTO 35020 
VTAB V: HTAB H: CALL ZL: PRINT S;: RETURN 


REM Schreibschutz prufen 

HV = PEEK (SA + 13):SS = PEEK (SA + 14) > 127 
HV = PEEK (SA + 12): RETURN 

REM Schreiben 

Al = AB * 1.1:F1 = FM:SM = 64 

GOSUB 38000: POKE 254,SM 

CALL SR: RETURN 


REM Byte-Anzahl und Flußwechselabstand setzen 
Al = 65536 — INT (Al): REM 2'er Komplement 

A2 = INT (Al / 256):Al = Al - AR x 256 

POKE 251,FM(Fl): POKE 252,A1: POKE 253,A2 
RETURN 


REM Lesen 
Al = AB:Fl = FM: GOSUB 38000: CALL LR 
LF = PEEK (254) + 256 * PEEK (255): RETURN 


REM Fehler-Nachricht ausgeben 
GOSUB 42000: FLASH : PRINT F$(F); 
NORMAL : PRINT BEL$;: RETURN 


REM Lösch-Warnung ausgeben 

T$ = "Spur " + STR$ (S(SN,LN)) + " wird" 

IF MO = 3 AND B < 17 THEN T$ = "Alle Spuren werden" 
POKE 35,24: VTAB 23: PRINT T$;" gelöscht!" 

PRINT "weiter? (J/N) "; 

PRINT BELS$;: GET EZ$: GOSUB 45500 

IF EZ$ < > "J" AND EZ$ < > "N" GOTO 41050 


REM Zeile 23 und 24 löschen 
POKE TT,Ø: VTAB 23: HTAB 1: CALL ZL 
VTAB 24: CALL ZL: RETURN 


REM Stop-Hinweis ausgeben 
GOSUB 42ØØØ: INVERSE 

PRINT "STOP MIT JEDER TASTE"; 
NORMAL : RETURN 


REM Cursor zum Ende der Befehlszeile 
V = Bl + 2:H = LEN (B$(Bl)) + 6 
VTAB V: HTAB H: CALL ZL: RETURN 


REM Zeichen-Eingabe ohne Cursor 
EZ = PEEK (TD): IF EZ < 128 GOTO 45010 
POKE TT,@:EZ$ = CHR$ (EZ — 128) 


REM Klein- in Großbuchstaben umwandeln 
IF EZ$ < = CHR$ (96) THEN RETURN 
EZ$ = CHR$ ( ASC (EZ$) - 32): RETURN 


REM Fehler pro Spur ausgeben 

Hl = INT (S / ZE):V = S — ZE * Hl +2 

H = Hl * 40 / SP + 1: VTAB V: HTAB H + (SP < 4) 
PRINT S; TAB( H + 3 + 3 * (SP < 4));LF(S); 
RETURN 


REM Text-Uberschrift 

SP = INT (MS / 20) + 1 

ZE = INT (MS / SP) + 1: INVERSE 

FOR I = Ø TO SP — 1: HTAB I * 40 / SP + 1 
IF SP < 4 THEN PRINT "SPUR FEHLER"; 

IF SP > = 4 THEN PRINT "SP.FEH."; 

NEXT : NORMAL : RETURN 


REM Zurück zum Hauptmenü 

GOSUB 42000: INVERSE 

PRINT "WEITER MIT JEDER TASTE"; 
NORMAL : GOSUB 45000: TEXT 





Peeker 8/85 





48040 : 


49000 
49010 
49020 
49030 
49040 
49050 
49060 
49070 


REM Menü ausgeben 

HOME : HTAB 5: INVERSE : 
NORMAL : PRINT 

FOR B = 1 TO MB:B$ = 
IF B$ < > " " THEN PRINT B$;" — 
PRINT : NEXT 

GOSUB 21020: GOSUB 22020: GOTO 31000 


PRINT TI$ 


MID$ (BT$,B,1) 
";B$(B); 


49080 F 


49090 : 


50000 
50010 
50020 
50030 
50040 
50050 
50060 
50070 
50080 
50090 


REM Programm-Initialisiserung 

TI$ = "APPLE II DISKETTENSYSTEM TEST" 

SPEED= 100: HOME 

HTAB 5: INVERSE : PRINT TI$: NORMAL : PRINT 
PRINT TAB( 6);"von Gerhard Berg - 2.3.1985" 
VTAB 23: HTAB 1: INVERSE 

PRINT "PROGRAMM-DISKETTE AUS LAUFWERK NEHMEN" 
HTAB 5: PRINT "UND LEERE DISKETTE EINLEGEN!"; 
NORMAL : SPEED= 255 

VTAB 12: HTAB 13: PRINT "Bitte warten" 


50100 : 


51000 


51010 
51020 
51030 
51040 
51050 
51060 
51070 
51080 
51090 
51100 
51110 
51120 


AE = Ø:FM = 1:MO = 2:KS = 6378:JS = 16 + 16 * 
40) 

MS = AS - 1: DIM LF(MS),S(7,2) 

FOR I = Ø TO 7:S(I,1) = — 1:S(1,2) = - 
BEL$ = CHR$ (7):ZL = 64668 

FM(1) = 255:FM(2) = 170:FM(3) = 146 

CE(1) = 32:CE(3) = 0:CE(5) = 3:CE(7) = 60 
TD = 49152:TT = 49168:TG = 49216 

LR = HM:SR = HM + 33:UR = HM + 110 

JR = HM + 159:PR = HM + 186 

AE$ (Ø) = "aus":AE$(1) = "ein" 

VZ$(1) = "-":VZ$(2) = " ":VZ$(3) = "+" 
BT$ = "CDEØIAPH TFMSLW UJB" 

MB = LEN (BT$): DIM B$(MB),FB(MB) 


5113Ø : 


52000 
52010 
52020 
52030 
52040 
52050 
52060 
52070 
52080 
52090 
52100 
52110 
52120 
52130 
52140 
52150 
52160 
52500 
52510 


53000 
53010 
53020 
53030 
53040 
53050 
53060 
53070 
53080 


FOR I = 1 TO MB: READ B$(I): NEXT 

DATA "Controller-Steckplatz (Slot) #:" 
DATA "Laufwerk (Drive) #:" 

DATA "Laufwerk ein-/ausschalten:" 

DATA Positionieren auf Spur Ø 

DATA 1 Spur nach innen,l Spur nach außen 
DATA "Positionieren auf Spur:" 

DATA hin und her zwischen Spur 

DATA " ",Schreibschutz testen 

DATA "FluBwechselabstand:" 

DATA "Schreib/Lese Modus: " 

DATA Schreiben, Lesen 

DATA abwechselnd Schreiben und Lesen 
DATA "Ç" ",Umdrehungsdauer messen 

DATA "Spur-Justage: Trigger generieren" 
DATA Ausgang nach BASIC 


FOR I = 1 TO MB: READ FB(I): NEXT 
DATA Ø,1,1,2,3,3,2,2,Ø,2,Ø,Ø,4,3,4,Ø,4,3,Ø 
52520 : 


FOR F = 1 TO 7: READ F$(F): NEXT 

DATA KEIN CONTROLLER AUSGEWÄHLT! 

DATA LAUFWERK IST NICHT EINGESCHALTET ! 
DATA KOPFPOSITION IST UNDEFINIERT! 

DATA DISKETTE IST SCHREIBGESCHUTZT! 

DATA "KEIN DISK-CONTROLLER IN STECKPLATZ " 
DATA FEHLER IN PRÜFSUMME DES BOOT-PROM'S! 
DATA SPUR-JUSTAGE AUF SPUR 

F$(7) = F$(7) + " " + STR$ (JS) + "!" 


53090 : 


54000 
54010 


54020 : 


55000 


55010 PS = 


55020 
55030 
55040 
55050 
55060 
55070 
55080 
55090 
55100 
55110 
55120 
55130 
55140 
55150 
55160 


FOR I = 1 TO 3: READ MO$(I): NEXT 
DATA dauernd. L Spur,ganze Diskette 


REM Assemblerprogramm abspeichern 

Ø: FOR I = 36864 TO 37174 

READ HV: POKE I,HV:PS = PS + HV: NEXT 
DATA 166,25Ø,169,Ø,133,254,133,255 
DATA 164,252,189,140,192,16,251,197 
DATA 251,240,6,230,254,208,2,230 
DATA 255,200,208,238,230,253,208,254 
DATA 96,166,250,36,254,165,251,221 
DATA 141,192,157,143,192,221,14Ø,192 
DATA 8,4Ø,234,234,8,4Ø,2Ø1, 146 

DATA 2Ø8,2,23Ø,255,157,141,192,221 
DATA 14Ø,192,112,1Ø,234,172,Ø,192 
DATA 16,234,189,142,192,96,23Ø,252 
DATA 2Ø8,226,23Ø,253,2Ø8,224,44, 254 
DATA Ø,16,239,16Ø,3,169,17Ø,157 

DATA 141,192,221,14Ø,192,72,1Ø4,72 
DATA 1Ø4,136,24Ø,222,2Ø8,239,166,25Ø 


Peeker 8/85 


(AS > 





55170 
55180 
55190 
55200 
55210 
55220 
55230 
55240 
55250 
55260 
55270 
55280 
55290 
55300 
55310 
55320 
55330 
55340 
55350 
55360 
55370 
55380 
55390 
55400 
55410 
55500 
55510 
55520 


technik 44 


DATA 169,3,133,254,198,254,240,36 
DATA 160,0,132,253,189,140,192,16 
DATA 251,2ØØ,2Ø8,4,23Ø,253,48,2Ø 
DATA 201,255,208,240,189,140,192,16 
DATA 251,201,170,240,223,200,208,244 
DATA 230,253,16,240,132,252,96,166 
DATA 250,189,140,192,16,251,44,0 
DATA 192,48,243,201,255,208,242 ,44 
DATA 48,192,44,64,192,32,8,145 
DATA 240,229,169,0,133,254,165,252 
DATA 133,255,56,229,251,240,49,176 
DATA 6,73,255,230,252,144,4,105 
DATA 254,198,252,197,254,144,2,165 
DATA 254,201,12,176,1,168,56,32 
DATA 252,144,185,31,145,32,19,145 
DATA 165,255,24,32,254,144,185,43 
DATA 145,32,19,145,230,254,208,198 
DATA 32,8,145,24,165,252,41,3 

DATA 42,5,250,170,189,128,192,96 
DATA 164,253,169,10,32,19,145,136 
DATA 208,248,96,162,18,202,208,253 
DATA 234,56,233,1,208,245,96,1 
DATA 48,40,36,32,30,29,28,28 

DATA 28,28,28,112,44,38,34,31 

DATA 30,29,28,28,28,28,28 

IF PS < > 45695 GOTO 29200 


INt Ø: PR Ø 


POKE 35,22:WS = 


DISKTEST.START 


POKE 1Ø4,64 
POKE 16384,Ø 
RUN DISKTEST 





RETURN 


Tien 
bear. 


Union Dielen = 
IC ) Stie hi di 






Í 
Í 


Trick Icks 


EI 


Ny 
wor ann, NS Í 


Apple DOS 3.3 — 
Tips und Tricks 


von U. Stiehl 


2. Aufl. 1984, 216 S., mit zahlreichen, 
ausführlich kommentierten Programm- 
listings, kart., DM 28,— 

ISBN 3-7785-1049-5 


Dr. Alfred Hüthig Verlag : Postf. 10 28 69 : 6900 Heidelberg 1 


17 





ProDOS für Anfanger 


Teil 3: Geheimnisse von BSAVE und BLOAD 


1. FID in Applesoft? 


Wenn Sie bislang noch nicht vom BASIC 
.SYSTEM überzeugt waren, dann sind Sie 
es sicherlich, wenn Sie den nachfolgen- 
den Aufsatz gelesen haben, in dem ich 
Ihnen die bislang noch nicht publizierten 
Eigenschaften der zwei leistungsfåhigsten 
BASIC.SYSTEM-Befehle vorstellen 
werde. 

Sie kennen alle das alte FID (File Devel- 
oper) für DOS 3.3, das zum Kopieren von 
DOS-Dateien dient. Dieses Maschinen- 
programm hat eine Länge von ca. 4800 
Bytes. Nun stellen Sie sich einmal vor, Sie 
sollten dieses Programm (fast) ausschließ- 
lich in Applesoft-Basic (mit höchstens 
ganz kurzen Maschinenroutinen) schrei- 
ben. Wäre dies möglich? Wie groß wäre 
dann das Applesoft-Programm? Und wie 
würden Sie vorgehen, damit T-, B- und A- 
Dateien beliebiger Länge kopiert werden 
können? Sie werden jetzt mit Recht ver- 
muten, daß nicht nur ein sehr großes, son- 
dern auch ein sehr langsames Applesoft- 
Programm entstehen würde. 

Nicht so unter dem BASIC.SYSTEM von 
ProDOS! Hier ist es tatsächlich möglich, 
ein Kopierprogramm für Dateien beliebiger 
Art und Größe fast ausschließlich in Ap- 
plesoft zu schreiben, das nicht nur sehr 
kompakt (weniger als 1800 Bytes), son- 
dern auch relativ schnell ist. Dies ist allein 
aufgrund des sehr leistungsfähigen 
BSAVE/BLOAD-Befehls möglich. 


18 


2. BSAVE und BLOAD 


2.1. Speicherbereich 

Der Speicher des Apple lle/llc/ll Plus läßt 
sich abstrakt als ein Kontinuum von Spei- 
cherstellen definieren, die von $0000- 
$FFFF bzw. von 0-65535 durchnumeriert 
sind. Dabei bezeichnen wir als Speicher- 
bereich einen durchgehenden Abschnitt 
des Gesamtspeichers, z.B. den Speicher- 
bereich $2000-$3FFF (HGR Seite 1). Die 
Anfangsadresse dieses HGR1-Bereiches 
ist $2000, die Endadresse $3FFF und die 
Länge $2000. Bei der Längenberechnung 
beachte man immer, daß das erste Byte 
mitgezählt werden muß. Ein einfaches 
Beispiel: 

Speicherbereich: 768-770 
Anfangsadresse: 768 

Endadresse: 770 

Länge: 3 (768 + 769 + 770) 

Die Länge errechnet sich demnach durch 
die Formel 

Endadresse - Anfangsadresse + 1, 

d.h. hier konkret 

770-768+1=3 

Vertiefend können wir festhalten: Ein 
Speicherbereich ist eine kontinuierliche 
Folge von Speicherstellen und låBt sich 
durch Anfangsadresse, Endadresse und 
Långe charakterisieren. Im Grenzfall ist die 
Långe = 1; dann fallen Anfangsadresse 
und Endadresse zusammen. Jede Spei- 
cherstelle enthålt einen Wert (= Byte) im 
Bereich 0-255 bzw. $00-$FF. Die einzel- 





von Ulrich Stiehl 


nen Speicherstellen haben absolute Spei- 
cherplatznummern, weil der Gesamtspei- 
cher von 0-65535 durchnumeriert ist. Da- 
neben gibt es noch relative Speicherplatz- 
nummern (= Byte-Offset oder kurz Offset) 
im Bereich 0 bis (Långe - 1). Nehmen wir 
hierzu an, daß die absoluten Speicherstel- 
len 768-770 die Bytes $C1, $C2 und $C3 
(entspricht ASCII „A“, „B“ und „C“) ent- 
halten. Dann gilt im einzelnen: 

$0300 = 768 — $0000 = 0 ($C1=,„A“) 
$0301 = 779 - $0001 = 1 ($C2=,B") 
$0302 = 770 - $0002 = 2 ($C3=, C“) 
Die absolute Speicherstelle 768 ist zu- 
gleich die nullte Speicherstelle, wenn die 
Zählung mit 0 bei 768 beginnt. Die nullte — 
oder bei „normaler“ Zählweise , erste“ — 
Speicherstelle (mit dem Offset = Abstand 
= 0) enthält „A“, die 1. Speicherstelle 
(Offset = 1) enthält „B“ und die 2. und 
letzte Speicherstelle (Offset = 2) enthält 
„C“. Der Byte-Offset liegt damit stets im 
Bereich O bis Länge minus 1. 


2.2. Datei 

Ziehen wir nunmehr zu den weiteren Erör- 
terungen das Bild 1 heran. In der oberen 
Bildhälfte wird ein Teil des RAM-Spei- 
chers, nämlich der für BSAVE und BLOAD 
hauptsächlich in Frage kommende Spei- 
cherteil $0800-$95FF dargestellt. Als 
Speicherauszug (= auf Diskette zu spei- 
chernder Bereich) wählen wir $2000- 
$3FFF (HGR1). 


Peeker 8/85 





Wàhrend der RAM-Bereich als eine konti- 
nuierliche Folge von Bytes im internen 
Speicher definiert werden kann, läßt sich 
die Diskettendatei bzw.. der File als eine 
kontinuierliche Folge von Bytes im exter- 
nen Speicher (= Datenträger: Diskette, 
Festplatte, RAM-Disk usw.) charakterisie- 
ren. Daß eine Datei letztlich in 512-Byte- 
Blocks unterteilt ist, die physisch auf der 
Diskette verstreut sein können und inso- 
fern kein Byte-Kontinuum darstellen, ist 
zunächst irrelevant. 


Die Bytes einer Datei sind absolut nume- 
riert vom nullten bis zum letzten Byte, 
denn beim BSAVE/BLOAD-Befehl bezieht 
sich der Byte-Offset immer auf den Anfang 
der Datei. Betrachten wir hierzu die untere 
Hälfte von Bild 1. Die dort dargestellte 
Datei namens FILE hat eine Länge L von 
$6000 Bytes, die von Byte-Offset B = 
$0000 = absolut nulltes Byte = Dateian- 
fang bis Byte-Offset B = $5FFF = absolut 
letztes Byte = Dateiende durchnumeriert 
sind. Ähnlich wie der Gesamtspeicher in 
Speicherbereiche unterteilt werden kann, 
läßt sich auch eine Gesamtdatei in 
Dateiabschnitte aufteilen. Im Bild 1 ist der 
Bereich Byte-Offset $4000 bis $5FFF ein 
solcher Teilabschnitt. 


Der sog. EOF (= End of File = ENDFILE 
im ProDOS-Directory) hat eine doppelte 
Bedeutung: Zum einen versteht man unter 
EOF (als Kardinalzahl) die Gesamtzahl al- 
ler Bytes einer Datei, also die Dateilänge. 
Zum anderen bedeutet EOF (als Ordinal- 
zahl) die Nummer desjenigen Bytes, das 
dem letzten Byte der Datei folgt bzw. fol- 
gen würde. Man beachte also, daß der 
Begriff EOF nicht mit dem Begriff Dateien- 
de identisch ist. 


Nun kommen wir endlich zum BSAVE/ 
BLOAD-Befehl. Der BSAVE-Befehl über- 
trägt einen (beliebigen) Speicherbereich 
als Speicherauszug in einen (beliebigen) 
Teilbereich einer Datei, während der 
BLOAD-Befehl einen (beliebigen) Teilbe- 
reich einer Datei in einen (beliebigen) 
Speicherbereich einlädt. Im einzelnen gibt 
es folgende Parameter: 

A = Anfangsadresse des Speicherbe- 
reichs 

E = Endadresse des Speicherbereichs 

L = Länge des Speicherbereichs 

B = absoluter Byte-Offset der Datei 

T = Dateityp 


A- und E-Parameter: Beim BSAVE kann 


theoretisch jede Anfangs- und Endadres- 
se im Bereich $0000-$BFFF angegeben 


Peeker 8/85 


RAM 
$0800 A$2000 
FILE 
B$0000 B$2000 





E$3FFF 








prodos 44 





x = 


AN 


Bild 1: BSAVE BILD, A$2000, L$2000, B$4000 


werden. Wegen BLOAD sind praktisch je- 


doch nur die Bereiche $0300-$03CF so- _ 


wie $0800-$95FF zulässig, weil $0000- 
$02FF sowie $9600-$BFFF vom BASIC- 
‚SYSTEM als belegt markiert werden. 


L-Parameter: Die Länge ergibt sich aus (E 
- A + 1). Die maximale Länge beträgt 
theoretisch $FFFF = 65535. Beim BSAVE 
muß man neben A entweder E oder L 
angeben, also niemals beide gleichzeitig! 
Wenn man beim BLOAD A, E und L weg- 
läßt, so gelten als Ersatz die beim letzten 
BSAVE benutzen A/E/L-Werte. Wurde ei- 
ne Datei gerade mit BLOAD geladen, so 
kann sie unmittelbar danach ohne A, E 
oder L mit BSAVE zurückgespeichert 
werden (vgl. Bug weiter unten). 


B-Parameter: Da unter ProDOS eine ein- 
zelne Datei 16M groß sein kann, kann der 
B-Parameter Werte im Bereich $000000 
bis $FFFFFF einnehmen. Wenn B fehlt, 
wird automatisch B = 0 angenommen. Mit 
B meint man stets den Byte-Offset in der 
externen Datei und niemals den o.g. Byte- 
Offset im internen Speicherbereich. 

Die Werte für A, E, L und B können wahl- 
weise als Dezimal- oder Hexadezimalzah- 
len (mit vorangestelltem $-Zeichen) ein- 
gegeben werden. 


T-Parameter: Dieser Parameter für die di- 
versen Dateitypen (TBIN, TTXT usw.) ist 
nur dann erforderlich, wenn eine Nicht- 
BIN-Datei bearbeitet werden soll. Wenn 
nämlich der T-Parameter fehlt, wird auto- 
matisch eine BIN-Datei (Binärdatei, B- 
Datei) angenommen (daher auch die Be- 
fehlswörter B-LOAD und B-SAVE). Nicht- 
BIN-Dateien müssen jedoch erst mit dem 
CREATE-Befehl erzeugt werden, bevor 
sie mit BSAVE/BLOAD bearbeitet werden 
können. 


Beispiele 

BSAVE BILD, A$2000, L$2000 

speichert die BIN-Datei BILD (ab Byte- 
Offset 0, weil der B-Parameter fehlt). Wür- 
de eine BIN-Datei namens BILD noch 
nicht auf der Diskette existieren, so würde 
sie vom BASIC.SYSTEM zunächst auto- 
matisch angelegt (= „kreiert“). 

BLOAD BILD 

lädt mangels weiterer Parameter die ge- 
samte BILD-Datei wieder in den alten 
Speicherbereich $2000-$3FFF. 
BLOAD BILD, A$4000 

lädt die BILD-Datei nunmehr 
HGR2-Bereich ab $4000. 


CREATE TEXT, TTXT 

BSAVE TEXT, TTXT, A768, E770 

legt zunächst eine TXT-Datei namens 
TEXT an und speichert dann darauf, wenn 
wir das obige Beispiel aufgreifen, die 
Buchstaben „ABC“ ab Byte-Offset 0 ab. 
BSAVE TEXT, TTXT, B3, A768, L3 

hängt „ABC“ an das Ende der TXT-Datei 
an, die nunmehr den Inhalt „ABCABC“ 
hat. 


BLOAD TEXT, TTXT, A780, B3 

lädt die drei letzten Buchstaben „ABC“ 
der TXT-Datei in den Speicherbereich 
780-782. 


BLOAD PRODOS, A$2000, TSYS 

lädt die SYS-Datei PRODOS in den Spei- 
cher ab $2000. Da der B-Parameter fehlt, 
wird mit dem nullten Byte der Datei begon- 
nen. Und da weder der E- noch der L- 
Parameter spezifiziert wurde, wird die ge- 
samte Datei eingelesen. 


in den 


Der BILDTEST (s. Listing), der mit dem 
Bild 1 korrespondiert, packt 3 HGR1-Bil- 
der in eine einzige BIN-Datei. Bild 1 veran- 
schaulicht den BSAVE-Vorgang für das 
dritte HGR1-Bild. 


19 





2.3. BSAVE-Bug 1.0 

Die oben geschilderten BSAVE-BLOAD- 
Verfahren gelten nur ab Version 1.1 des 
BASIC.SYSTEMSs, das in der Regel in Ver- 
bindung mit PRODOS 1.1.1 benutzt wird. 
Im „CALL A.P.P.L.E" (Mårz-Heft) wurde 
irrigerweise vermutet, daß nur beim zwei- 
ten BSAVE ein Byte-Offset über das alte 
EOF hinaus möglich sei. Dies ist jedoch 
falsch. Genauer gesagt konnte beim „ver- 
bugten“ BASIC.SYSTEM 1.0 ein BSAVE 
über den alten EOF hinaus nur für den Fall 
B<=L 

realisiert werden. Beispiele: 

BSAVE XXX, A5000, BO, L2 

ENDFILE danach 2 

BSAVE XXX, A5000, B1, L2 

ENDFILE danach 3 

BSAVE XXX, A5000, B2, L2 

ENDFILE danach 4 

BSAVE XXX, A5000, B3, L2 

ENDFILE danach wieder 4, 

weil hier B > L (Bug)! 

Ferner unterscheidet sich der neue 1.1- 
BSAVE vom alten 1.0-BSAVE darin, daß 
der 1.1-BSAVE erstens im Falle von 

L < momentanes EOF 

die Altdatei nicht kürzt bzw. schrumpfen 
läßt und daß zweitens über den momenta- 
nen EOF hinaus BSAVES mit 

B> EOF 

möglich sind, wodurch „Loch“-Dateien 
entstehen können. Beispiele: 


BSAVE XXX, A5000, L1, B$FFFFFF 

erzeugt unter dem BASIC.SYSTEM 1.1 
eine BIN-Datei mit einem ENDFILE von 
16777215 Bytes (= 16M - 1). Unter Ver- 
sion 1.0 würde hier eine Fehlermeldung 
produziert. Für Interessierte: Diese Datei 
belegt 5 Blocks, und zwar 2 (!) 
Datenblocks sowie 3 Index-Blocks. 


BSAVE YYY, A$2000, L$4000 

BSAVE YYY, A$2000, L$2000 

würde unter Version 1.0 nach dem zweiten 
BSAVE die Dateilänge wieder auf L$2000 
schrumpfen lassen. Unter Version 1.1 
würde weiterhin eine Länge von $4000 
ausgewiesen. 


3. KOPY und BATCHKOPY 


Die nachfolgenden zwei Dateikopierpro- 
gramme demonstrieren die ungewöhnli- 
che Leistungsfähigkeit des BASIC.SY- 
STEMSs 1.1. 


3.1. KOPY 

KOPY wird mit RUN KOPY gestartet. Es 
schaltet zunächst die 80-Zeichenkarte ein 
— dies kann man streichen — und meldet 


20 


sich dann mit einem spartanischen Menü 
„BEFEHL (K/C/E):". Man hat nun 4 Op- 
tionen: 

1. E bedeutet E(nde) des Programms. 

2. C bedeutet C(ATALOG) in bezug auf 
das momentane Directory-Präfix. 

3. DIREKTBEFEHL führt einen beliebigen 
Direktbefehl aus, z.B. 

CAT/RAM 

PREFIX/USERS.DISK 

DELETE XXX 

LOCK YYY 

UNLOCK ZZZ 

USW. 

4. K... ist der eigentliche K(OPY)- oder 
Kopierbefehl. Die Syntax lautet 
K/VOLUMET1/FILE1,/VOLUME2/FILE2 
d.h. „K“ + „vollständiger Pfadname der 
Ausgangsdatei" + ,," + „vollständiger 
Pfadname der Zieldatei“. Die eigentlichen 
File-Namen können identisch oder auch 
verschieden sein, so daß mit dem Kopier- 
vorgang gleichzeitig eine Datei umbenannt 
werden kann. Nehmen wir an, daß sich die 
Datei „PRODOS“ auf der Diskette mit 
dem Volume-Namen „USERS.DISK“ be- 
findet und auf das Subdirectory „SUB- 
DIR“ der RAM-Disk mit dem Volume-Na- 
men „RAM“ kopiert werden soll. Dann 
lautet der Kopierbefehl 
K/USERS.DISK/PRODOS,/RAM/SUBDIR/PRODOS 

Man beachte, daß innerhalb des Befehls 
keine Leertasten zulässig sind und daß die 
Volume- bzw. Subdirectory-Namen durch 
Schrägstriche abgegrenzt werden 
müssen. 

Die Anwendung des Programms KOPY 
wird dann empfohlen, wenn einzelne 
Dateien kopiert werden sollen. 


3.2. BATCHKOPY 

Die Optionen 1-3 sind bei BATCHKOPY 
dieselben wie bei KOPY. BATCHKOPY 
empfiehlt sich anstelle von KOPY dann, 
wenn eine Vielzahl von Dateien kopiert 
werden soll. Zu diesem Zweck gibt man 
beim Kopierbefehl zunächst ein nacktes 
„K“ ein, worauf man die Ausgangs- und 
Zielpräfixe festlegen kann, z.B. 

VON PREFIX/ USERS.DISK 

NACH PREFIX/ RAM 

Die Schrägstriche vor dem ersten und 
nach dem letzten Directory-Namen wer- 
den automatisch ergänzt. Danach wird das 
gesamte Ausgangsdirectory Name für Na- 
me angezeigt, und man braucht nunmehr 
nur noch durch „J(a)“ oder „N(ein)“ be- 
stimmten, welche der einzelnen Dateien 
kopiert werden sollen. 

BATCHKOPY ist fast genauso schnell 
bzw. langsam wie der FILER der Firma 
Apple, der allerdings 15mal so umfang- 


reich ist! Wer ein noch schnelleres Kopier- 
programm benötigt, der verwende das in 
„ProDOS für Aufsteiger, Band 2“ abge- 
druckte Kopierprogramm PROFID, das als 
reines Maschinenprogramm noch kürzer 
und zugleich ca. 40% schneller ist. In der 
Kürze liegt die Würze! 


Die Programme KOPY und BATCHKOPY 
kommen nicht ganz ohne Maschinenrouti- 
nen aus. Insbesondere der sog. Get- und 
Set-File-Info-MLI-Befehl mußte in Assem- 
bler geschrieben werden. Die entschei- 
dende Stelle in den beiden Applesoft-Pro- 
grammen ist jeweils die Zeile 72, die den 
schubweisen BLOAD- und BSAVE-Befehl 
ausführt. Dies wäre unter DOS 3.3 un- 
denkbar gewesen. Denken Sie jedoch 
daran, daß KOPY und BATCHKOPY nur 
unter dem BASIC.SYSTEM 1.1 funktionie- 
ren. (Das o.g. PROFID funktioniert unter 
allen ProDOS-Versionen.) 

Wer das Applesoft-Programm näher be- 
trachtet, wird übrigens feststellen, daß ich 
eine Schwäche für ON-GOTO-Konstruk- 
tionen habe, die an die Stelle des fehlen- 
den IF-THEN-ELSE-Befehls treten. 


4. BSAVE-Bug 1.1. 


Vollziehen Sie folgenden Test: 

. POKE 5000, 1: POKE 10000, 2 

. BSAVE XXX, A5000, L1 

. BSAVE XXX, A10000, L 1 

. POKE 10000, 0 

. BLOAD XXX 

. PRINT PEEK (5000) 

. PRINT PEEK (10000) 

. CATALOG 

Sind Sie überrascht? 

Der 1.1-BSAVE-Befehl ändert die beim er- 
sten BSAVE registrierte Anfangsadresse 
später nie mehr. Deshalb muß man stets 
den A-Parameter hinzufügen, sonst kön- 
nen unheilvolle Dinge passieren. Es wurde 
also bei 1.1 ein alter Bug beseitigt und ein 
neuer eingebaut. Dieser Bug kommt bei 
KOPY und BATCH KOPY nicht zum Tra- 
gen. 


OO — O) O1 +. O [NS — 


I 


Peeker 8/85 





Visible 
Computer 


Ein Simulationsprogramm, das Sie in das Innere des 6502 Mi- 
kroprozessors führt. Sie sehen auf dem Bildschirm, wie die ein- 
zelnen Instruktionen in Zeitlupe ausgeführt werden, wie sich die 
Register und die Flags veråndern. Ein unverzichtbares Hilfsmit- 
tel beim Erlernen der Assembler-Programmierung, danach ein 
wertvolles Werkzeug beim Testen Ihrer eigenen Programme. 
Komplett mit einem 6502 Editor/-Assembler, deutschem Hand- 
buch (150 Seiten) und über 30 Beispielprogrammen. 

Für Apple II, IIplus, //e und //c. 

















sensur 
SETTIST 


ISBN 3-89058-019-X DM 129,-- 


EN a f 
EE p = š 
EE SE ER oo In allen Buchhandlun- 


E pe SE 38 


E ee EE E HEG 
nn Í S gen und Computershops 
oder direkt vom Verlag: 


rd rs Lepila wen ie s. a E 
EE SE 


Wu Zug Cie Sg ne. a 8 
HATE STE r 16-23 Ze Ze 


eeh w Teie Ac. SANE `; 
Fer Tira Fie Aall 







SS Pandabooks 


ER 
RR 
Æ R 





-o er sS Bismarckstr. 67 
le Sec 1000 Berlin 12 


Ss) (030) 342 88 00 


nschrift 
V-Scheck liegt bei (spesenfreie Lieferung) 
per Nachnahme (zzgl. DM 3,-- Versandspesen) 


OO Ë 


— Stck. Visible Computer DM 129,-- 


Peeker 8/85 21 


KOPY 
(Warnung: KOPY funktioniert nur mit BASIC.SYSTEM 1.1!) 


10 


12 


PRINT CHR$ (4);"PR#3": PRINT : IF PEEK (116) < 128 THEN 
PRINT "KEIN PUFFER!": END 

DATA 32,Ø,191,196,55,3,176,38,169,1Ø,141,73,3,32,%, 
191,196,73,3,176,25,162,3,189,58,3,157,76,3,2Ø2,16,247, 
169,7,141,73,3,32,Ø,191,195,73,3,176,1,96,32,218,253,32 
DATA 58,255,76,208,3,10,0,2,0.0,0,0,0,0,0,0,0,0,0,0,0,0, 
Ø,Øø,128,2: FOR X = 768 TO 843: READ Y: POKE X,Y: NEXT: 
REM GETINFO 

DATA 32,6,227,32,19Ø,222,32,227,223,32,1Ø8,221, 

133, 133,132,134,32,44,213,2ØØ,32,233,227,76,154,218: 
FOR X = 900 TO 925: READ Y: POKE X,Y: NEXT : REM INALL 
ONERR GOTO 24 

HOME : INVERSE : PRINT "x**x* KOPY x": 

PRINT "* U.STIEHL *": NORMAL : GOTO 26 

PRINT "SYNTAX?": GOTO 26 

ON E = 1 AND PEEK (222) = 19 GOTO 62: 

PRINT "FEHLER "; PEEK (222);"!" 

CLEAR : PRINT : PRINT "BEFEHL (K/C/E):";: CALL 9ØØ,B$: 
ON B$ = "" GOTO 26: ON LEFT$ (B$,1) = "K" GOTO 34: 

IF B$ = "E" THEN POKE 216,Ø: END 

IF B$ = "C" THEN PRINT CHR$ (4);"CATALOG": GOTO 26 
PRINT CHR$ (4);B$: GOTO 26 

REM SYNTAX:K/V1/N1,/V2/N2 

B = LEN (B$): IF B < 1Ø THEN 22 

FOR X = B TO 2 STEP - 1: IF MID$ (B$,X,1) = "," 

THEN N2$ = MID$ (B$,X + 1,B - X): 

N1$ = MID$ (B$,2,X = 2): X = 2 

NEXT : ON N1$ = "" OR N1$ = N2$ GOTO 22:N1l = LEN (N1$): 
N2 = LEN (N2$): ON Nl < 4 OR N2 < 4 GOTO 22: 

ON LEFT$ (N1$,1) < > "/" OR LEFT$ (N2$,1) < > "/" GOTO 22 
FOR X = N1 TO 2 STEP — 1: IF MID$ (N1$,X,1) = "/" 

THEN P1$ = LEFT$ (N1$,X):Fl = N1 - X: 

F1$ = RIGHT$ (N1$,F1): X = 2 

NEXT : IF P1$ = "" THEN 22 

FOR X = N2 TO 2 STEP — 1: IF MID$ (N2$,X,1) = "/" 

THEN P2$ = LEFT$ (N2$,X):X = 2 

NEXT : IF P2$ = "" THEN 22 

REM DIR-READ 

B$ = CHR$ (4) + "VERIFY": PRINT B$;P2$: PRINT B$;P1$: 
PRINT B$;N1$: PRINT CHR$ (4);"OPEN";P1$;",TDIR": 

PRINT CHR$ (4);"READ";P1$: INPUT B$: INPUT B$: INPUT B$ 
INPUT B$: IF MID$ (B$,2,F1) = F1$ AND MID$ (B$,Fl + 2,1) 
=" " THEN PRINT CHR$ (4);"CLOSE": GOTO 58 

ON B$ < > "" GOTO 52: PRINT CHR$ (4);"CLOSE": 

PRINT "NAME?": GOTO 22 

REM KOPIEREN 

LL = VAL ( MID$ (B$,65,7)):T$ = ",T" + MID$ (B$,18,3): 
B = Ø:A = 6144:L = 24576: REM $18ØØ+$6ØØØ=$78ØØ 

E = 1: PRINT CHR$ (4); "CREATE";N2$;T$: GOTO 64: 

REM E=ERROR 

E = Ø: PRINT CHR$ (4); "DELETE" ; N2$: 

PRINT CHR$ (4); "CREATE"; N2$; T$ 

IF LL < L THEN L = LL: ON L > Ø GOTO 70: RUN 26 
GOSUB 72:B = B + L: ON B + L < LL GOTO 66:L = LL — B: 

IF L = @ THEN RUN 26: REM LOOP 


REM SETINFO 

GOSUB 72: POKE 512,N1: FOR X = 1 TO N1: 

POKE 512 + X, ASC ( MID$ (N1$,X,1)): NEXT: 

POKE 640,N2: FOR X = 1 TO N2: POKE 640 + X, 

ASC ( MID$ (N2$,X,1)): NEXT : CALL 768: RUN 26 
PRINT CHR$ (4);"BLOAD";N1$;T$;",A";A;",B";B;",L";L: 
PRINT CHR$ (4) ;"BSAVE" ;N2$;T$;",A";A;",B";B;",L";L: 
RETURN 


BATCHKOPY 


(Warnung: BATCHKOPY funktioniert nur mit BASIC.SYSTEM 1.1!) 


10 


12 


PRINT CHR$ (4);"PR#3": PRINT : IF PEEK (116) < 128 THEN 
PRINT "KEIN PUFFER!": END 

DATA 32,Ø,191,196,55,3,176,38,169,1Ø,141,73,3,32, 
Ø,191,196,73,3,176,25,162,3,189,58,3,157,76,3,2Ø2,16,247, 
169,7,141,73,3,32,Ø,191,195,73,3,176,1,96,32,218, 253,32 
DATA 58,255,76,208,3,10,0,2,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0,128,2: FOR X = 768 TO 843: 

READ Y: POKE X,Y: NEXT : REM GETINFO 

DATA 32,6,227,32,19Ø,222,32,227,223,32,1Ø8,221,133, 
133,132,134,32,44,213,200,32,233,227,76,154,218: 

FOR X = 900 TO 925: READ Y: POKE X,Y: NEXT : REM INALL 
ONERR GOTO 24 

HOME : INVERSE : PRINT "*BATCH-KOPYx*": 

PRINT na U.STIEHL *": NORMAL : GOTO 26 








PRINT "SYNTAX?": GOTO 26 

ON E = 1 AND PEEK (222) = 19 GOTO 6Ø: PRINT : 

PRINT "FEHLER "; PEEK (222);"!" 

CLEAR : PRINT : PRINT "BEFEHL (K/C/E):";: CALL 9ØØ,B$: 
ON B$ = "" GOTO 26: ON B$ = "K" GOTO 34: 

IF B$ = "E" THEN POKE 216,Ø: END 

IF B$ = "C" THEN PRINT CHR$ (4);"CATALOG": GOTO 26 
PRINT CHR$ (4);B$: GOTO 26 


2 REM PREFIX-WAHL 


PRINT : PRINT "VON PREFIX/";: CALL 9ØØ,P1$: 

ON P1$ = "" GOTO 26:P1$ = "/" + P1$ + "/": 

PRINT "NACH PREFIX/";: CALL 9ØØ,P2$: 

ON P2$ = "" GOTO 26:P2$ = "/" + P2$ + "/": 

PRINT CHR$ (4); "VERIFY";P2$: PRINT CHR$ (4);"VERIFY";P1$ 
REM DIRECTORY-READ 

DIM C$(1ØØ):C = Ø: PRINT CHR$ (4);"OPEN";P1$;",TDIR": 
PRINT CHR$ (4); "READ";P1$: INPUT B$: INPUT B$: INPUT B$ 
C = C + 1: INPUT C$(C): ON C$(C) < > "" GOTO 4Ø:C = C - 1: 
PRINT CHR$ (4);"CLOSE": ON C = Ø GOTO 26: 

PRINT CHR$ (4);"FRE":CC = Ø 

REM DATEI-WAHL-SCHLEIFE 

PRINT :CC = CC + 1: ON CC > C GOTO 26: 

PRINT MID$ (C$(CC),2,15);" J/N "; 

GET B$: ON B$ < > "J" AND B$ < > "j" AND B$ < > "N" 
AND B$ < > "n" GOTO 46: PRINT B$;" ";: 

ON B$ = "N" OR B$ = "n" GOTO 44: 

B$ = C$(CC):N$ = MID$ (B$,2,15) 

IF RIGHT$ (N$,1) = " " THEN 

N$ = LEFT$ (N$, LEN (N$) - 1): GOTO 48 

N1$ = P1$ + N$:Nl = LEN (N1$):N2$ = P2$ + N$: 

N2 = LEN (N2$): PRINT N1$;" -> ";N2$; 

REM DATEI-KOPIE 

LL = VAL ( MID$ (B$,65,7)):T$ = ",T" + MID$ (B$,18,3): 
IF T$ mn. TDIR" THEN PRINT " DIRECTORY!";: GOTO 44 

B = Ø:A = 8192:L = 20480: REM $2000+$5000=$7000 

E = 1: PRINT CHR$ (4);"CREATE";N2$;T$: GOTO 62: 

REM E=ERROR 

E = Ø: PRINT CHR$ (4); "DELETE" ;N2$: 

PRINT CHR$ (4); "CREATE" ;N2$;T$ 

IF LL < L THEN L = LL: ON L > Ø GOTO 7Ø: GOTO 44 

REM SCHUBKOPIE-SCHLEIFE 

GOSUB 72:B = B + L: ON B + L < LL GOTO 66:L = LL — B: 

IF L = Ø THEN 44 

REM SETINFO 

GOSUB 72: POKE 512,Nl: FOR X = 1 TO N1: 

POKE 512 + X, ASC ( MID$ (N1$,X,1)): NEXT: 

POKE 640,N2: FOR X = 1 TO N2: 

POKE 640 + X, ASC ( MID$ (N2$,X,1)): NEXT: 

CALL 768: GOTO 44 

PRINT CHR$ (4);"BLOAD";N1$;T$;",A";A;", B";B;",L";L: 
PRINT CHR$ (4);"BSAVE";N2$;T$;",A";A;",B";B;",L";L: 
RETURN 


GETSETINFO 


(Als DATA-Statements in KOPY und BATCHKOPY enthalten. 
GETSETINFO funktioniert bei allen ProDOS-Versionen!) 


ORG $0300 


Get/Set File-Info US/16.05.85 


Altname laden, dessen Parameter 
(Access/Filetype/Auxtype) 
zwischenspeichern, dann Neuname 
laden und mit geànderten 
Parametern zurückspeichern. 


(O O JO QI Ë Q N ta 


= 
= 


* * ÅÅÅ 


DOSWARM EQU $Ø3DØ 
MLI EQU $BFØØ 
BELL EQU $FF3A 
PRBYTE EQU $FDDA 
* 
GETINFOl JSR MLI ;Altname 
HEX C4 
DA CNTA 
BCS ERROR 
* 
GETINFO2 LDA +$ØA : GET 
STA CNTB 
JSR MLI ;Neuname 
HEX C4 
DA CNTB 
BCS ERROR 





Peeker 8/85 


prodos 44 





0315: A2 03 29 LDX #3 BILDTEST 
0317: BD 3A Ø3 30 COPY LDA ACCESSA,X ;Alt nach 
Ø31A: 9D 4C Ø3 31 STA ACCESSB,X ;Neu kopieren (Warnung: BILDTEST funktioniert nur mit BASIC.SYSTEM 1.211 
Ø31D: CA 32 DEX 
031E: lØ F7 33 BPL COPY 1ØØ VTAB 24: PRINT : PRINT "BILDTEST": HCOLOR= 7 
34 x 110 N = 2 
0320: A9 97 35 SETINFO2 LDA +$Ø7 ; SET 120 FOR X = @ TO N 
0322: 8D 49 Ø3 36 STA CNTB 130 HGR : HPLOT 1ØØ,X * 2Ø TO 200,X * 20: 
0325: 2Ø ØØ BF 37 JSR MLI ; Neuname REM Waagrechter Strich, unterschiedlich tief 
Ø328: C3 38 HEX C3 140 PRINT CHR$ (4); "BSAVE BILD, A8192, L8192, B"; 
0329: 49 Ø3 39 DA CNTB X * 8192 
Ø32B: BØ Øl 40 BCS ERROR 150 PRINT X + 1;" ";: NEXT : PRINT 
032D: 69 41 RTS 160 FOR X = Ø TO N 
4 x* 170 HGR : PRINT CHR$ (4);"BLOAD BILD, A8192, L8192, B"; 
Ø32E: 2Ø DA FD 43 ERROR JSR PRBYTE X * 8192 
0331: 20 3A FF 44 JSR BELL 180 PRINT X + 1;" ";: NEXT 
Ø334: AC DØ Ø3 45 JMP DOSWARM 
46 * 
Ø337: ØA 47 CNTA HEX ØA ;Nur GET GET FILE INFO ($C4) 
KR på p3 = _. pe ZER RR Parameter-Count = $0A — 1 Byte 
Ø33A: ØØ 49 ACCESSA HEX ØØ Name-Pointer — LL HH — 2 Bytes 
033B: og 50  FILETYPA HEX ØØ Access — 1 Byte, gepokt 
033C: ØØ og 51  AUXTYPEA HEX 0000 File-Type — 1 Byte; gepokt 
Ø33E: ØØ 52  STORAGEA HEX ØØ Auxiliary Type — 2 Bytes; gepokt 
Ø33F: og ØP 53 BLOCKSA HEX 0000 pe Pë Sg We? nn V 
i OCKS used — wen ytes; gepo 
eh PP PØ 54 MDATEA HEX 0000 Modification-Date — 2 Bytes; gepokt 
3: ØØ Op 55 MTIMEA HEX ØØØØ Modification-Time — 2 Bytes; gepokt 
0345: ØØ ØØ 56  CDATEA HEX 0000 Creation-Date — 2 Bytes; gepokt 
0347: ØØ QQ 57  CTIMEA HEX ØØØØ Creation-Time — 2 Bytes; gepokt 
58 * 
0349: ØØ 59 CNTB HEX ØØ ;GET/SET SET FILE INFO ($C3) 
en 80 92 69 NAMEB DA $0280 ;640 Parameter-Count = $07 — 1 Byte 
C: 99 61 ACCESSB HEX ØØ Name-Pointer — LL HH — 2 Bytes 
Ø34D: ØØ 62 ` FILETYPB HEX ØØ Access — 1 Byte 
Ø34E: ØØ QQ 63 AUXTYPEB HEX ØØØØ File-Type — 1 Byte 
0350: ØØ 64  STORAGEB HEX ØØ Auxiliary Type —2 Bytes 
Ø351: ØØ ØP 65 BLOCKSB HEX 0000 erre ar, N 
. i ion- = 
0353: ØD ØØ 66 MDATEB HEX ØØØØ Modi fication-Time — 2 Bytes 
0355: ØØ og 67  MTIMEB HEX ØØØØ 
0357: ØØ og 68  CDATEB HEX ØØØØ 
0359: og og 69 CTIMEB HEX 0000 


91 Bytes 


APPLE -- DISKETTEN LAUFWERKE 

Original Disk II m. Controller + DOS 3.3 + Hdbuch 
Original Disk II (2. Laufwerk} 

Duo-Disk Station Slimline, 2 x 143KB Chinon 

Siemens Disk-Laufw., 143KB, m. Kabel + Gehäuse 
Abor-Disk-Laufw., Slimline, 143KB, m. Kab. + Geh. 
Chinon Slimline, 143KB, Superleise, m. Kab. 3 Gen. 

Teac 55F, 1 MB unf. Kapazität, Shugartbus 

Teac 55F, kpl..in Gehäuse, 40/80 Track, 1MByte 
anschlußfertig, mit Umschaltung 40/80 + Kabel 
Zweitlaufwerk für Apple II C, 143 KB, mit Kabel 

APPLE - INTERFACES + MAINBOARDS 

Disk Controller f. 2 Original o. kompat. Drives 
Super-Controller f. 2x Teac 55F, mit Software 

80 Zeich-Karte mit 64K RAM + Softsw. f. Ile 

80 Zeich-Karte II, m. Softswitch, 2 Zeichensätze "DM 
16K RAM Erweiterung für Il und kompatible "DM 
Z 80A Interface Kate für CPM 2.2 *DM 
Z 80B Interface Karte für CPM 3.0, m. 64K RAM DM 
Printer-Grafik Interface, Epson kompatible *DM 
Centronic-Paralell Text-Interface Karte *DM 
Printer-Grafik Interface, NEC/ITOH kompatibel *DM 
Anschluß Kabel f. Paralell + Grafik Interface DM 
Buffer Grafik-Interface, benutzbar für Drucker 
Epson/Nec/Itoh/Okidata u. andere m. 32K Buffer DM 
Buffer Interface wie vor aber mit 64K Buffer **DM 
AnschluB Kabel f. Buffer Interface Karte DM 
232C Serielle Interface Karte *DM 
Super Serielle Interface Karte, Fullduplex “DM 
Sprach (Speech) Karte f. Sprachwiedergabe *DM 
6522 Paralell Interface Karte *DM 
Clock Karte (Datum/Uhrzeit) Ein/Ausgabe *DM 
Eprom Writer Karte (2716 - 2764) *DM 
IEEE-488 Interface Karte *DM 
Logo-Karte mit Diskette und Handbuch DM 
Musik Karte m. Diskette und Handbuch *DM 
PAL Color Interface Karte (UHF + Video) *DM 
RGB Interface Karte (f. Apple II + I+) *DM 
Wild Karte (kopiert über RAM-Bereich) *DM 
128K RAM Erweiterungs Karte m. Patchsoftware **DM 
256K RAM Erweiterungs Karte m. Patchsoftware **DM 
6809 Prozessor Exell-9 Interfacekarte + DM 
IC-Tester Interface Karte (RAMS/TTL 54/74) DM 
Hauptplatine 48K, o. Firmware Eproms, 8 Slots DM 
Hauptplatine 64K, wie vor DM 
APPLE -- LEERPLATINEN =- 
Leerplatinen der obigen Interface Karten sind alle in vergoldet, 
m. Bestück-Aufdruck + Best.-Plan lieferbar. 

Leerpiatinen mit der Kennzeichnung **DM 
Leerplatinen mit der Kennzeichnung "DM 
Leerplatinen mit der Kennzeichnung + DM 
Experimentier Platine, für Apple Slot EX300 DM 
Leerplatine Motherboard, 48K, mit Best.-Aufdruck DM 
Leerplatine Motherboard, 64K, mit 6502 + Z80 DM 


Peeker 8/85 


398,— 
598,— 
398,— 
448,— 
448,— 
498,— 
APPLE 


39,— 
24,50 
3 — 
29,90 
66,— 
99,— 


100% Apple-kompatibel 6 Mon. Garantie 
bei Verwendung des 


Apple-Betriebssystems. 


APPLE -TASTATUREN+LEERGEHÄUSE+NETZTEILE- APPLE 
Standard Einbau-Tastatur, ASCII, freibel. 9 Tasten, 
Doppelbelg. aller Tasten, GroB+Kleinschr. Nr. N26 DM 
Tastatur wie vor, jedoch mit 15er Block Nr.N67 DM 
Tastatur Nr. N67, mit sep. Gehåuse, kpl. m. Kabel DM 
Seperate Tastatur IBM-Look, anschluBfertig mit 

Kabel, Dopp. belegt.Tasten, frei prog. Funkt.Tasten DM 298,— 
Seperate Tastatur, Eprom progr.-bar, Cursorblock 

Tastenfeld mit 24 Funktionen, Deutsch o. ASCII DM 398,— 
Leergehåuse Standard, passend f. Tastatur Nr.N26 DM 98— 
dto. wie vor, jedoch passend für 15er Tast. N67 DM 119,— 
Leergehåuse wie Mewa 9000, fur Einbau von zwei 
Slimline-Laufwerken + TastaturanschluB, Plastic DM 
Leergehäuse wie vor, jedoch in Metall-Ausführung DM 
Leergehäuse IBM-Look, f. 2 Laufw. Standard 5" DM 
Leergehäuse für 1 Slimline Laufwerk, Metall DM 
Leergehäuse f. Duo-Disk = 2x Slimline-Laufwerke DM 
Leergehäuse f. Duo-Disk = 2x Standard-Laufw. DM 
Leergehäuse f. Duo-Disk = 2x Slimline + Netzteil DM 
Schaltnetzteile für APPLE u. kompatible Rechner 
+5V/3,5A -5V/0,5A +12V/2A -12V/0,5A N73 DM 99,80 
+5V/5 A -5V/0,5A +12V/2,5A -12V/0,5a N74 DM 119,80 
+5V/7,5A -5V/0,5A +12V/2A -12V/0,5A N75 DM 149,50 
.... DISKETTEN + DISKETTEN-BOXEN — “mmm 
Profi Disk.Box, m. SchloB, Klars.-Deckel, 100 Disks DM 49,— 
Disk Box mit Klars.-Deckel, ca. 70 Disketten 5” DM 26— 
Hartbox für 10 Disketten, mit Klappdeckel DM 6,90 
Disketten, mit Verstårkungsring, 3 Jahre Garantie 

ABX 100 = SS/SD 10 Stck. a. 3,98 50 Stck. a. 3,88 500 Stck. a. 3,59 
ABX 200 = SS/DS 10 Stck. a 4,08 50 Stck. a 3,98 500 Stck. a 3,69 
ABX 400 = DS/DD 10 Stck. a. 4,98 50 Stck. a. 4,88 500 Stck. a. 4,59 


139,— 
249,— 


159,— 
198,— 
198,— 

19,90 

98,— 
109,— 
179,— 


COMPUTER CENTER CONEX 
5650 SOLINGEN 11 - Postfach 110206-7 T 
Telefon (02 12) 75449 


178,—. 


Reparaturservice 


APPLE -- ORIGINAL + KOMPATIBLE - COMPUTER -- APPLE 
APPLE lle, 64KRAM, Ascii-Tastat. + UHF-Modul. DM 2198, — 
APPLE lle, Einstiegspaket = Computer 64KRAM, 
+ Philips-Monitor 18 Mhz grun + Siemens F122 - 
Laufwerk 143K m. Controller + Lerndiskette 
APPLE II C, 128 KRAM, ASCII Tastatur 

APPLE II C, wie vor, jedoch deutsche Tastatur 
MACINTOSH System komplett m. Mouse + Tastatur 
+ Macwrite/Macpaint, Systemguide-Diskette 
MEWA-48K, Apple kompat., Netzt. SAmp, Tastatur 
mit Dopp-Belegung + 10 frei Prog.Tasten, mit 
UHF-Mod, ohne Firmware Eproms. 

MEWA-64K. wie vor jedoch mit 15er Block 

MEWA 9000er Serie, mit seper.Tastat. DIN o. ASCII 
m. dopp. belegt. Funkt-Tasten, Cursorbl. + 15er 
Block Netzt. 5 Amp., Gehäuse für 2x Slimline- 
Laufwerke UHF-Modulator, o. Firmw.-Proms 
(12KROM), 48K RAM 

MEWA 9000-64-C, wie vor jedoch 64K RAM 
MEWA 9000-64-C Einstiegspaket, wie vor, jedoch 
mit 1 Disk Drive eingeb. + Disk-Contr. + Monitor, 
grün DM 1898, — 
IBM-Look Gehäuse für MEWA 9000 Serie Aufpreis DM 39,— 
"IT am MATRIX- UND TYPENRAD - DRUCKER — ******** 
CP-80 Matrix Drucker, Epson kompat., vollgrafikf. DM 739,— 
CP-80 X mit eingeb. Interface tür VC 64 f. Sim. B. DM 899,— 
SPEEDY 100-80, Epson kompat., 100 Z/s, v.-grafikf. DM 759,— 
GEMINI 10X, Neu mit Textsp., 100 Z/s., 9x9 Mat. DM 998,— 
GEMINI 15X, wie 10X, jedoch bis 375 mm Papierbr. DM 1198,— 
ITOH 8510 B, Die Zuverlåssigkeit in Person DM 1475,— 
JUKI 6100, Typenraddr., 22 Z/s, TA-Typenräder DM 1495,— 


DM 3098,— 
DM 2795,— 
DM 2998,— 


DM 5995,— 
DM 698,— 
DM 728,— 


DM 998,— 
DM 1098,— 


Computer-Artikel Nachnahmeversand unfrei, Zwischenverkauf vorbehalten. 

Angebote freibleibend unter Anerkennung unserer Lieferbedingungen. Technische Änderungen vorbehalten. "Apple ist eingetragenes 
Warenzeichen der Fa. Apple-Computer Inc., Kalifornien. Ware mit Rückgaberecht, besonders gekennzeichnet, muß frei zurückgeschickt 
werden. "IBM" ist eingetragenes Warenzeichen der Firma IBM GmbH Ffm. 


ERICH-WILLI MEYER 


6343 FROHNHAUSEN - Postfach 70 11 
Telefon (027 71) 350 71 





...... 


IBM *** KOMPATIBEL IBM *** KOMPATIBEL ` 
Alle Teile unterliegen einer sorgfältigen Endkontrolle und wir 
übernehmen daher volle Garantie für die Funktionsfähigkeit, 
sowohl für die gelieferten Leerplatinen, als auch für die fertig 
bestückten Boards und Interface Karten, die fast ohne Ausnahme 
mit gesockelten IC's geliefert werden. 

IBM -- Kompatible Interface Karten und Mainboards -- IBM 
Disk Controller Karte für 2 Disk-Drives *KL-2020 DM 228,- 
Color Video Board, *KL-2050 DM ab 398,- 
Monochrome Video boards *KL-2060 DM ab 328,- 
RS 232 Drucker Interface Karte KL-2074 DM 
Centronics Paralell Interface Karte KL-2072 DM 
Multifunktion Karte, RAM-Bereich, RS232, 
Paralell, Clock, mit O K bestückt 

dto. wie vor, jedoch mit 128K bestückt 
dto. wie vor, jedoch mit 256K bestückt 
512K RAM Karte, mit O K bestückt KL-2095 DM 
dto. wie vor, mit 128K bestückt KL-2096 DM 
Multi 1/O Interface Board, RS232, Disk-Controller, 
Centronics, Clock, Joystick 

und Lightpen-Port 

Eprom Writer Karte (bis 128K benutzbar) 
Hardisk/Winchester Host-Adapter Karte 
Mainboard XT Version, 8 Slots 0 bestückt 
mit 1 Boot-Eprom, 6 Eprom-Plätze frei 
dto. wie vor, jedoch mit 128K bestückt *KL-1005 DM 

dto. wie vor, jedoch mit 256K bestückt *KL-1006 DM 
Mainboard PC Version, 8 Slots, 64K bestückt 

mit 1 Boot-Eprom, 6 Eprom-Plåtze frei *KL-1010 DM 

dto. wie vor, jedoch mit 128K bestückt *KL-1011 DM 

dto. wie vor, jedoch mit 256K bestückt “KL-1012 DM 1296,— 
Bei den mit * gekennzeichneten Artikeln gehört zum Lieferumfang 
ein Manual, und z. T. ein Schaltbild. 

Preislisten + Prospekte kostenlos gegen frankierten Rückumschlag. 
IBM -- Kompatible Leerplatinen + Boards - IBM 
Disk Controller f. 2 Drives DM 58— 
Color Grafik Video Board DM 78— 
RS232 Interface Karte DM ep — 
Centronics Paralell Interface Karte DM ep - 
Multifunktion Interface Board DM 99— 
Eprom Writer Interface Karte ?8— 
Multi 1/O Board 78,— 
Mainboard XT Version, 8 Slots 98,— 
Mainboard PC Version, 8 Slots 96,— 
RAM Card für Speicher-Erweiterung 68.— 
Alle Leerplatinen werden mit Bestückungsplan geliefert. 
Schaltbilder, soweit verfugbar, Lieferung gegen Aufpreis. 

IBM -- Gehäuse/Netzteile/Tastaturen/Diskdrives — IBM 
Rechner Leergehäuse f. Einbau v. 2 Drives DM 198,— 
Profi-Tastatur, m. Kabel im Gehäuse, ASCII DM 398,— 
dto. wie vor, jedoch deutsche DIN Belegung 418,— 
Standard Tastatur, IBM-Look, ASCII 298,— 
Netzteil, mit Ventilator, 100 Watt 298,— 
dto. wie vor jedoch 135 Watt 338,— 
Disketten Laufwerk, 2x40 Track DS/360 KB 398,— 
Harddisk 10MByte, kpl. m. Xebec Controller DM 2990,— 


Sonderliste gegen Rückporto. Katalog gegen 3 DM in Briefmarken 


*KL-2040 DM 
*KL-2041 DM 
*KL-2042 DM 


*KL-2071 DM 
*KL-2022 DM 
*KL-1004 DM 





23 








von N.G. Barbieri 


Teil 3: Tricks über Tricks 


Was ist eigentlich der Applesoft-Interpre- 
ter? Fur den Applesoft-Anfånger ein unbe- 
kanntes Wesen im Apple, das fur Dauer- 
belåstigung mit , SYNTAX ERROR" sorgt; 
für den Applesoft-Kenner ein persönlicher 
Gegner, den es unbedingt auszutricksen 
gilt; und für den Assemblerprogrammierer 
schlicht und einfach eine Ansammlung 
von Maschinenroutinen, die nach Möglich- 
keit durch eigene Routinen aufzurufen und 
zu erweitern sind. Dies setzt jedoch ge- 
naue Kenntnisse über Aufbau und Struktur 
des Interpreters voraus. 


Nee 


OR 





BOX.COPY 


Damit kommen wir zu der in diesem Bei- 
trag abgedruckten Utility BOX.COPY. Wie 
bereits angekundigt, handelt es sich um 
das punktweise Kopieren des Inhalts ei- 
nes in der HGR1-Seite definierten Recht- 
ecks auf eine andere Stelle derselben 


24 


Graf-quattro 


Seite oder wahlweise auf die HGR2-Seite. 
Bindet man diese Utility in die Routinen 
der vergangenen Beiträge ein, dann ist es 
von Applesoft aus sehr einfach: Cursoren 
einmal positionieren, dann ein zweites 
Mal, ein POKE 255,0 für Übertragung 
HGR1-HGR1 oder POKE 255,1 für Über- 
tragung HGR1-HGR2, ein CALL 25297, 
und die Sache låuft schon. Will man nur 
diese Routine allein in eigene Programme 
einbauen, dann immer — in der Reihenfol- 
ge X1LOW, X1HIGH, Y1 und X2LOW, 
X2HIGH, Y2 — die Eckwerte der ursprüng- 
lichen Box in $03C4 (964) bis $03C9 (969) 
und die Eckwerte des Zielgebietes in 
$03CA (970) bis $03CF (975) poken, Sei- 
tenflag in $00FF (255) nicht vergessen 
und nun CALL 25297. 


Zu dem eigentlichen Assemblerpro- 
gramm, insbesondere für diejenigen, die 
in der Maschinensprache ihre ersten 
Schritte wagen, ist noch einiges zu sagen: 
Es handelt sich um eine reine „Bit-an/Bit- 
aus-Übertragung“ ohne Rücksicht auf das 
letzte Bit oder die Positionierung (d.h. Co- 
lor-Bereich oder gerade und ungerade Hi- 
res-Spalte), so daß beim Übertragen von 
farbigen Ausschnitten komische Farbver- 
schiebungen eintreten können. Demge- 
genüber klappt es bei schwarzweiß immer. 


Das Programm besteht aus zwei Teilen: 
Der erste Teil untersucht die relative Posi- 
tion der zwei Rechtecke und entscheidet, 





ob das Kopieren von links nach rechts und 
von oben nach unten oder umgekehrt ver- 
laufen soll, da es für den Fall, daß sich 
Ursprungs- und Zielbox überschneiden, 
passieren könnte, daß man kopiert, was 
schon einmal kopiert worden ist. Das Pro- 
blem ist ähnlich wie beim Moven von Spei- 
cherbereichen, nur daß hier die Über- 
schneidung zweidimensional sein könnte. 
Der zweite Teil (ab LOOP) holt sich ein- 
fach einen Punkt von einer Stelle und 
bringt ihn an einer anderen Stelle unter, 
bis der ganze Inhalt der Box übertragen 
worden ist (siehe auch Kommentar). 





Drei Tricks für Anfänger 


16-Bit-Vergleich 

Jeder kennt die CMP-Funktion (Compare) 
zum Verzweigen (Branch) je nach Carry- 
oder Zero-Flag, obwohl gelegentlich beim 
Bestimmen, was größer, gleich oder klei- 


Peeker 8/85 











ner ist, Verwirrungen entstehen können. 
Belegen aber die zu vergleichenden Werte 
zwei Bytes (wie im Falle der X-Koordina- 
ten), ist die einfachere Version erst ein 
Vergleich der High-Bytes und, wenn sie 
gleich sind, ein zweiter Vergleich der Low- 
Bytes, um die Sache endgültig klarzuma- 
chen. Der im Programm gezeigte Weg 
(Trick Nr. 1) ist kürzer und schneller. Erst 
ein Vergleich der zwei Low-Bytes, um das 
Carry-Flag entsprechend zu setzen, dann 
eine Subtraktion (mit Carry) der zwei High- 
Bytes, so daß am Ende die üblichen Bran- 
ches erfolgen können. 


16-Bit-Dekrement 

Was beim 16-Bit-Inkrement klappt, d.h. 
das High-Byte wird dann inkrementiert, 
wenn das Low-Byte den Wert $00 ein- 
nimmt (ansonsten BEQ), ist beim Dekre- 
mentieren nicht gegeben, da der Wert $00 
des Low-Bytes auch mitgenommen wer- 
den muB. Also greift man normalerweise 
zur 16-Bit-Subtraktion, wobei vom High- 
Byte immer eine 0 mit Carry subtrahiert 
wird. Mit dem kleinen Kniff (siehe Trick Nr. 
2) wird beim 16-Bit-Dekrement auch die 0 
immer mitgenommen. 


HSCRN-Routine 

An sich hatte ich ursprunglich vor, diese 
Routine als separate Utility zur allgemei- 
nen Benutzung zu gestalten, aber dann 
habe ich es mir anders überlegt. Trotz 
ausgedehntem Einsatz von Zeropage- 
Pointern ist das bitweise Übertragen auch 
so langsam genug! Überträgt man eine 
Box in der Größe der ganzen Grafikseite, 
d.h. 53760 Punkte, dauert dieses etwa 33 
Sekunden. Eine gesonderte Routine hätte 


Peeker 8/85 


für jeden einzelnen Punkt zusätzlich ein 
JSR und ein RTS gekostet, also ganze 12 
Zyklen mehr, und das macht sich be- 
merkbar! 


Ich möchte dem Leser aber eine separate 
HSCRN-Routine nicht vorenthalten. Die 
Routine HSCRN ist völlig relokativ, so daß 
man wie folgt vorgehen kann: 


Ein BLOAD HSCRN, A... an jede beliebige 
Stelle. Danach die in Frage kommenden 
Koordinaten in der üblichen Reihenfolge 
(XLOW, XHIGH und Y) in $0000, $0001 
und $0002 poken, dann CALL... (Stelle 
von A = Anfangsadresse der Routine), 
danach ein N = PEEK (3). Ist N = 0, dann 
ist der angepeilte Punkt schwarz, ist 
N < > 0, entsprechend weiß. Einfach, 
nicht wahr? 


Mit dieser Folge sind die Assembler-Rou- 
tinen für das erste Modul der Serie Graf- 
quattro komplett. Jetzt heißt es zusam- 
menstellen, also Diskette mit allen Assem- 
bler-Routinen in das Laufwerk legen und 
dann: 


BLOAD XPLOT 
BLOAD CURSOR 1 
usw. bis 


BLOAD BOX.COPY 
Danach: 
BSAVE GRAF.QUATTRO1, A$6000, L$466 


Wer sich diese Mühe nicht machen will, 
kann auch die entsprechende Peeker-Dis- 
kette bestellen! 


Eigentlich könnte jetzt jeder Applesoft- 
Programmierer seinen eigenen Hires- 
Page-Editor selber schreiben. Nichtsde- 
stoweniger wird mein eigener Editor dem- 
nächst im Peeker erscheinen. 


Grafik g f, electronic 1 





Neue Preise # 8 


IBM-PC/XT-COMPATIBLE COMPUTER+ZUBEHÖR 
Mainboard XT f. 16bit+256K-RAM+8 Slots, Leerkarte 

Disk Controller leer (f. 4 x 360KB-Drives) 

Monochrome Graph. + par. Printer Leerkarte (Hercules comp.) 
Color RGB + Video Graphik Leerkarte 

Parallel Printer Leerkarte 

512K-RAM Leerkarte 

Multi 1/O Leerkarte (Printer, Ser., Game, Uhr gepuffert) 
384K-Multi 1/O Leerkarte w.o 

Mainboard XT-16bit+ (bis 256K-aufr.) + 881. best. +gepr 

OK + Boot Eprom 

Mainboard w.o jedoch 256K-vollbest 
64KB-RAM-Chip-Aufrüstsatz(9 Stück) einzeln geprüft! 

Disk Controller gepr. (f. 4 x 360KB-Drives) 

Monochrome Graph. + par. Printer Karte gepr. (Hercules comp.) 
Color RGB + Video Graphikkarte gepr 

Parallel Printer-Karte gepr. o. Kabel (Extra Kabel = 75,—) Kl 
512K-RAM-Karte gepr. (OKB) 188,-- 
384K-Multi 1/O Karte, RS 232, par. Printer, Interf. Game/Joystick Port 

Real Time Clock gepuff. OK + RAM-Disk/Spooler/Uhr Softw 

384K-Multi 1/0 w.o. vollbest. + gepr 

Multi VO Karte (Par.+Ser.+Uhr gepuffert) gepr 

Profi-Funktionstastatur dt. oder ASCII+15er Block 

130W-Netzteil mit eingebautem Ventilator KurzschluBfest 
360KB-Diskdrive Slimline ohne Gehåuse 

XT-256K-16bit Rechner (incl. Boot-Eprom)+360K-Drive + Contr. 

+F. Tastatur im IBM-look like Geh.+130W-Netzteil best.+gepr. 

XT-256K w.o + Color-RGB + Video-Graphik-Karte 2645 
XT-256K w.o aber mit Monochrome-Graphik-Karte+par. Printer int. 2898 
IBM-PC-Systemeinheit + Laufwerk 

IBM deutsche DIN-Tastatur 

IBM-Bildschirm Color 

PC 10-Commodore dt. Tast 

GENIE 16 C (256K-RAM bis 640K aufr.) 2 x 360K-Drive, 

ser. + par. Printer - incl., dt. Tastatur 

Software+ Manual für IBM+ compatible Geräte 

Microsoft flight simulator 

CPM 86 

Lotus 1-2-3 

Framework 

D-base Ill 

UCSD P-System 

Symphony 

APPLE-BUS COMPUTERPLATINEN+PERIPHERIE 





Motherboard durchkontaktet mit Lötstoplack 

M-board II 48K, gesockelt, vollbest.+gepr 

M-board II 64K+Z80 CPU, gesockelt, v.best.+gepr 

M-board lle 64K vollbestückt+gepr 

APOLLO II Kunststoff-Leergehåuse 

APOLLO II Gehäuse incl. Funkt.-Tast 

Leerplatine: 16K-RAM, Z80/CPU-, Controller DOS 3.3, 
Parallel-Druckerkarte, Ser. Int. V24, 802/24Z-Karte 
PAL-Modulatorkarte, je 

Entwicklungslochraster-Leerplatine durchkontaktiert 
16K-Speicher-Karte geprüft 

APPLE orig. 16K-Language Karte gepr 

Z-80 CPU-Karte geprüft 

Controller DOS 3.3-Karte geprüft 

Auto-Controller DOS 3.2/3.3-Karte gepr 

Erphi AFDC 2 Controller + Autopatch Softw. + Handbuch 
Parallel-Drucker-Karte geprüft 

Bbit par. Grappler-Int.+64K-Buffer+Kabel gepr 
Seriell-Interface-Karte V24 geprüft 

Super-Seriell-Interface Karte gepr 
80-Zeichen/24-Zeilen-Karte geprüft 
80Z/24Z-Karte+Softswitch-Schalter Leerplatine ` 
802/24Z-Karte+Softswitch-Schalter geprüft 

IEEE-488 Int. Karte gepr 

PAL-Modulator/Color-Karte geprüft 

PAL-RGB-Color Karte gepr 

128K-Speicher-Leerkarte 

128K-Speicher-Leerkarte + Software + Manuel 
128K-Speicher-Karte+Software geprüft 
256K-Speicher-Leerk.+4 Spezial ICs+Software 
256K-Speicher-Karte+Software geprüft 

Maus incl. Software 

EPROM-Burner (2708/16/32/64) geprüft 

Modem Euronorm-Karte gepr. + Software + Man 
UHF/TV-Modulator universell 

Lüfter anclipsbar (220 V) 

Dataphon s21d Akustikkoppler-FTZ 

APOLLO // (48K)+UHF-Mod.+Gr/Kl vollbest.+gepr.+F.-T. 
APOLLO // (64K)+Disk II F+Contr.+12"-Monitor 

APOLLO //A (48K)+Gr/KH15er-Tastatur vollbest+gepr.+F--T. 
APOLLO //A (64K)+Disk II F+Contr.+12"-Mon 

APOLLO // ASKF (48K) vollbest. + gepr. Sep. Keyboard+Gr/Ki+ 
15er-Block mit Funkt.-Tasten im „IBM-look like“ Gehäuse 
APOLLO // ASKF (48K) w.o + Disk II F + Contr. 

APOLLO // ASKF (48K) w.o jedoch 2 x Disk II F + Contr 
Aufpreis für M-board // 64K+Z80 CPU 

APPLE-DuoDisk, 2 x 143 KB+Controller orig 

APPLE-Disk // Laufwerk+Contr.+Kab. DOS 3.3+ProDOS orig. 
APPLE-Disk // (2. Laufwerk) orig 

Disk //+Contr.+Kabel DOS 3.3 (Siemens) im Geh 

Disk // (2. Laufwerk, Siemens) im Geh 

Disk //F+Contr.+Kab. DOS 3.3 (1/2 Höhe) im Geh 

Disk //F (2. Laufwerk, 1/2 Höhe) i. Geh 

Erphi Duo-Disk 1,2 MByte incl. Netzteil+Contr. 

Maus f. Apple // incl. Manual+Software 
APPLESOFT+TurorialH-Reference Manual engl 

APPLE-DOS 3.3 Manual engl 

APPLE-DOS 3.3 Hb.dt, 

APPLE ProDOSHB + Disk orig. 

APPLE-Pascal Reference+Operating Manual engl 
APPLE-Pascal USCD 1.1. Disks+Manuals orig 

APPLE-Pascal Reference Hb. dt 

APPLE-Pascal Language Hb. dt 

APPLE-FORTH Manual engl 

APPLE-Fortran Manual engl 

CP/M-Software Vol. Hl, Manual engl 

APPLE // Pascal-Handbuch deutsch (te-wi) 

APPLE //-Anwenderhandbuch deutsch (te-wi) 
6502-Programmier-Handbuch deutsch 

6502-Anwendungen Handbuch deutsch (Rod.Zaks 
Software + Manual f. APPLE+compatible Geräte 

apple how to, apple soft tool kit, cp/m basic compiler, cbasic 
dbase // ver. 2.4, wordstar+ mailmerge + spellstar mit installprogramm 
apple logo, datastar, calcstar, pfs file, pfs grapg, pfs re+port, apple 
fortran, cp/m c language, spitfire simulator, c-programming language 
flight simulator, visicalc, visischedule, visitrend, multiplan, supersort 
microsoft cobol 80, microsoft fortran 80, dgraph+dbase utility 


APOLLO //e (64K) PAL+15er Block, vollbest. und gepr. 
APOLLO //e 128K+802/24Z-Karte 

APPLE //e 128K+802/242-Karte 

APPLE //e (64K)+Disk II F+Contr+12”-Monitor 
802/24Z+Softswitch+64K-RAM-Karte geprüft 

APPLE //c (128K) dt. Tastatur 

Z80 Karte gepr. f. APPLE //c+RAM-Disk-Software Hb 
Macintosh System (128K) 

Macintosh System (512K) 


7 oe 
Macintosh Umrüstung von 128K auf 512K -- 
SANYO MSX-Computer MPL 64 dt. Tastatur pm 





EPSON GX 80+, *NEU*NEU*NEU* 

EPSON RX 80+, 8bit/parallel 

EPSON RX 80F/T+, 8bit/parallel 

EPSON RX 100+, 8bit/parallel 

EPSON FX 80F/T+, 8bit/parallel 

EPSON FX 100+, 8bit/parallel 

EPSON LQ 1500+, 8bit/parallel 

EPSON Traktoraufsatz für FX 80 
APPLE/EPSON-Drucker Graphic-Interface+Kabel 
MX 80/82, FX/RX 80 Spezialfarbband-Kassette 
BROTHER-Typenraddr. HR 15XL 8bit/par. neustes Mod 





STAR SG10, NLQ- + IBM-Zeichensatz, 8bit/par 

Zenith ZVM 123 gr. 12" oder Zenith ZVM 122 or. 12" 15 MHz 
SANYO DM 2212 12" orange 15 MHz 

SANYO 9112 Monochromer Monitor 12", gr 

Monochromer 12"-Monitor entspiegelt gr. 0. or. 22 MHz 


Disketten in Box + Aufkleber I. Wahl 10 St./100 St. å 


54" Verstårkt BASF 3M FUJI DATA NEUTRAL 
SCOTCH MAGNE- 


1X, SS/SD 
1D, SS/DD 
2D, DS/DD 
1D/96TPi 
2D/96TPi 
2HD/1.2MB 
1X, Hard 


8” 
1X, SS/SD 49/ 4,39 6 
79/ 4,59 
7,09/ 6,89 © € 
9/ 4,39 6,68/ 6,48 


10,99/ 9,99 11,78/11.38 
Zweiseitig 14,99/14,29 


3M-Scotch 51⁄4” Flüssig-Reinigungsset (2 Disk.) einseitig 

BASF 5" Reinigungsdiskette einseitig 

51⁄4" Disketten-Archivbox für 10 Disks (1 St./10 St.) 

54" Disketten-Archivbox für 15 Disks 3M 

51" Disk-Karteikasten Kunststoff (ca. 80 Disk) 

514" Disk-Karteikasten Kunststoff (ca. 80 Disk) Rauchglas 

514" Disk-K.K. Rauchglas, abschließb. (f. ca. 80-100 Disks) 
2000 BI. Tabpapier (24 cm x 12” einf.) weiß oder grün/weiß Gert 


4000 Et-Aufkl. doppelr. (107 x 36 mm auf 240 x 12" perf, Trägerp.) 
16000 Etiketten-Aufkleber w.o 
4000 Etik.-Aufkl. einreih. (107 x 36 mm auf 125 x 12" perf. Träg.) 





OSZILLOSCOPE HAMEG ab Lager 
Bei Vorauszahlung frei Empfangsstation unversichert in der BRD, ausgenom 
men Papier und Etiketten, sonst N.N.+V.S. ab DM 30,-- 


Öffnungszeiten: Mo, Di. Do, Fr v. 10-18 h, Miu. Sa v. 10-14 h, la. Sa v. 10-18 h 
Telef. Best.: Mo. Di. Do. Fr von 10-19 Uhr, Mi u. Sa wie Öffnungszeiten 


GEWÄHRLEISTUNG: 6 Monate. auf alle bei uns gekauften Geräte, durch 
unsere eigene Sen ıc#- Werkstatt 

REPARATUREN an Appie + npatible Geräten + Zubehör führt unser 
Speziallistenteam garantiert zuverlässig + besonders Kostengünstig aus 
Sprechen Sie mit uns. 


Telex: 0772642 aaa-d 
Habsburgerstraße 134 
7800 FREIBURG, Tel. (07 61) 276864 
Bauelemente - Bausätze - uP's 
Meßgeräte - Zubehör - Fachliteratur 
Fachgeschäft für Elektronik + Mikrocomputer 


K electronic , 


25 





BOX.COPY 


26 


(O O JO Q Ë Q N 


ORG $62D1 ; 25297 


BOX.COPY 


von N.G. Barbieri/1985 
Aufrufen mit CALL 25297 


Kopiert den Inhalt einer Box 
bitweise auf eine andere 
Stelle derselben (HGR1) oder 
der anderen (HGR2) Grafik- 
seite. 


* H k HH HH HH H HH H H 


Applesoft-Routinen u. -Pointer 
* 

HPOSN EQU $F411 
HPLOTO EQU $F457 
GBASL EQU $26 
HMASK EQU $30 
HCOLORZ EQU $E4 
HPAG EQU $E6 

* 

* Cursorposition der 
* ursprünglichen Box 
* 

CA1XL EQU $3C4 
CA1XH EQU $3C5 
CA1Y EQU $3C6 
CA2XL EQU $3C7 
CA2XH EQU $3C8 
CA2Y EQU $3C9 

* 

* Cursorposition 

* des neuen Platzes 
* 

CU1XL EQU $3CA 
CU1XH EQU $3CB 
CU1Y EQU $3CC 
CU2XL EQU $3CD 
CU2XH EQU $3CE 
CU2Y EQU $3CF 

* 

* Zàhler für X- u. Y-Richtungen 
* 

COUNXL EQU $1D 
COUNXH EQU SIE 
COUNY EQU $1F 

* 

* X,Y-Koordinaten des zu 
* übertragenden Bits 
* 


XLOW EQU $9® 
XHIGH EQU $Ø1 
Y EQU $Ø2 


* 

* Links/Rechts-Flag 

* 

XFLAG EQU $Ø3 

* 

* X,Y-Zielkoordinaten 

* 

XLOW2 EQU $Ø6 

XHIGH2 EQU $97 

Y2 EQU $Ø8 

* 

* Oben/unten-Flag 

* 

YFLAG EQU $09 

* 

* Temporàre Ablage für beide 
* X-Koordinaten u. X-Zåhler 
* 

TEXL1 EQU $F9 

TEXH1 EQU $FA 

TEXL2 EQU $FB 

TEXH2 EQU $FC 

COXL EQU $FD 

COXH EQU $FE 

* D 

* Grafikseite-Ubertragunsflag: 
* wenn Ø auf HGRl, sonst auf HGR2 
* 

PFLAG EQU $FF 

* 

* 


C6 Ø3 88 


Ø6 


LDA 
CMP 
BNE 


Wenn beide 
auf 2! 


LDA 
STA 
BNE 


CA1Y 
CU1Y 
STEP1 


Y gleich, dann Flag 
+$2 


YFLAG 
TESTX 


Feststellen, ob von oben nach 


unten oder 


umgekehrt und YFLAG 


entsprechend setzen. 


TEP1 BCS 
LDA 

STA 

BNE 

DOINC LDA 
STA 


* * * * H 


HJ 
Di 
LO 
HJ 
>< 


LDA 
BNE 


Festellen, 


* * * * * 


LDA 
CMP 
BEQ 
BCS 
BCC 
LDA 
CMP 
BNE 


DOINC 
+$1 
YFLAG 
TESTX 
#$Ø 
YFLAG 


Wenn Übertragung auf der an- 
deren Seite, dann egal 
welche Richtung! 


PFLAG 
DOXINC 


ob von links nach 


rechts oder umgekehrt und XFLAG 
entsprechend setzen. 


CA1XH 
CU1XH 
TXLOW 
DOXINC 
DOXDEC 
CA1XL 
CUlXL 
STEP2 


Wenn gleiche X- und Y-Werte u. 
gleiche Seite, warum übertragen? 


Jetzt wird 


klar, warum bei 


gleichen Y-Werten das YFLAG 
auf 2 steht! 


LDA 
CMP 
BEQ 


STA 
JMP 
STEP2 BCS 
DOXDEC LDA 
STA 
BNE 
DOXINC LDA 
STA 
* 
LDA 
CMP 
BNE 


LDA 
STA 
RTS 


YFLAG 
+$2 
RET1 


XFLAG 
STEP3 
DOXINC 
+$1 
XFLAG 
STEP3 
+5Ø 
XFLAG 


CA1Y 
CA2Y 
DOIT 


+$20 
HPAG 


Für den Y-Zåhler testen, was 
wovon subtrahiert werden 


muß! 


OIT BCC 
SEC 
SBC 
STA 
LDA 
BEQ 
BNE 


SEC 

LDA 

SBC 

STA 

LDA 

BEQ 
* 


CA2Y 
CA1Y 
COUNY 
YFLAG 
MOD2 


* Y-Startpunkte setzen. 





Peeker 8/85 





D 





Ak Abo-Karte 


> Buch -Shop 





> Software -Karte 








EEKER 94 


MAGAZIN FUR APPLE-COMPUTER 





Ja, ich möchte peeker abonnieren. 

Liefern Sie mir peeker ab Ausgabe (1985 erscheinen 11 Ausgaben — 
1 Doppelnummer) zum Jahresbezugspreis von DM 72,- (Inland) incl. MwSt. Die 
Lieferung erfolgt frei Haus. Porto, Verpackung und Zustellgebühren übernimmt 
der Verlag. Der Jahresbezugspreis für das Ausland beträgt DM 72,- incl. MwSt., 
zzgl. DM 16,80 Versandspesen. 


Ich wünsche jährliche Berechnung durch: 
[_] Verlagsrechnung [ | Abbuchung von meinem Bank- 
bzw. Postscheckkonto 


Bank / PschA 
Bankleitzahl Kto.-Nr. 


Datum Unterschrift 


EEKER 44 


MAGAZIN FÜR APPLE-COMPUTER 





Bitte senden Sie mir gegen Rechnung folgende Bücher: 






Datum Unterschrift 


EEKER 44 


MAGAZIN FÜR APPLE-COMPUTER 





Bitte senden Sie mir 
gegen Rechnung folgende Apple-Programme: 


O Peeker-Sammeldiskette, einzeln O Apple DOS 3.3, Begleitdiskette, DM 28,- 
Disk# `. Disk O Apple ProDOS, Band 1, Begleitdiskette, 
Disk# — —, Disk# DM 28,- 

Preis je Disk DM 28,- (einzeln) = en Band 2, Begleitdiskette, 

[] Peeker Sammeldiskette, D Apple Assembler, Begleitdiskette, DM 28,- 
im Fortsetzungsbezug D ProDOS-Editor 1.0, Programm, DM 98,- 
Bb Disk FF nn O MMU 2.0, Programm, DM 98,- 
(Mindestbezug 6 Disketten) D INPUT 2.0, Programm, DM 98,- 

Preis je Disk DM 20,- 0 Softbreaker 1.0, Programm, DM 48,- 
O DB-Meister, Programm, DM 290,- 
O Superplot, Programm, DM 48,- 
O Superquick, Programm, DM 48,— 


Datum Unterschrift 


° 





PLZ/Ort 
Vertrauensgarantie: 


- Ich habe davon Kenntnis genommen, daß ich die Bestellung 
| schriftlich durch Mitteilung an den Dr. Alfred Hüthig Verlag, 





Ø Postfach 102869, 6900 Heidelberg 1 innerhalb von 





7 Tagen widerrufen kann. Zur Fristwahrung genügt die 


rechtzeitige Absendung des Widerrufs (Datum des 


Poststempels). 


Datum 


| Unterschrift 





Verlagshinweis: 
Das Abonnement verlångert sich zu den jeweils giltigen 


Bedingungen um ein Jahr, wenn es nicht 2 Monate vor 









S 


Bä 


Jahresende schriftlich gekündigt wird. 





° Meg bitte vollståndig ausfullen 


£ __ Vorname, Name 


Firma 





Telefon mit Vorwahl 


Telefon mit Vorwahi 





POSTKARTE 


peeker 
Leserservice 


Postfach 10 28 69 
6900 Heidelberg 1 


POSTKARTE 


peeker 
Versandbuchhandlung 


Postfach 10 28 69 


6900 Heidelberg 1 


POSTKARTE 


peeker 
Softwareabteilung 


Postfach 10 28 69 


6900 Heidelberg 1 


INPUT 2.0 


Ein Bildschirm- 
Maskengenerator 


fúr DOS 3.3 und ProDOS 

von U. Stiehl 

1984, Diskette und Manual, DM 98,- 

ISBN 3-7785-1021-5 

„Input 2.0" liegt wahlweise in der Bank 1 
oder Bank 2 der Language Card und wird 
durch einen kurzen Driver in den unteren 
48K aufgerufen. 

Für jedes Feld der Bildschirmmaske lassen 
sich u. a. definieren: Feldlänge (bis zu 255 
Zeichen) — Vtab — Htab — Datentyp (insge- 
samt 8 Typen) — Scrollflag (starre oder dyna- 
mische Maske) — Ctriflag — Fullflag — Lösch- 
flag — Bildschirmflag (40- oder 80-Z-Darstel- 
lung). Innerhalb eines Eingabefeldes besteht 
jeder denkbare Redigierkomfort (Insert, De- 
lete, Rubout, Restore usw.). 
Gerätevoraussetzung: Apple lle oder lic; fer- 
ner Apple II+ im 40-Zeichenmodus 


MMU 2.0 

Memory Managements 
Utilities 

für die Apple lle 64K-Karte 

DOS 3.3 (und ProDOS) 


von U. Stiehl 


1984, Diskette und Manual, DM 98,- 
ISBN 3-7787-1023-1 


Insgesamt enthält die neue ,MMU 2.0"- 
Diskette über 25 Programme, die neue 
Einsatzmöglichkeiten für die Extended 80 
Column Card (erweiterte 80-Z-Karte = 
64K-Karte für den Apple lle) erschließen. 
Ein Teil der Programme laufen auch auf 
dem Apple Il Plus, doch ist „MMU 2.0" 
primär für 64K-Karte-Besitzer gedacht. 


Gerätevoraussetzung: Apple lle mit 64K- 
Karte oder lic 


Softbreaker 1.0 


Eine softwaremäßige Interrupt-Utility 
für die Apple lle 64K-Karte 


von U. Stiehl 


1984, Diskette und Manual, DM 48,- 
ISBN 3-7785-1022-3 


Softbreaker ist ein Assemblerprogramm, mit 
dessen Hilfe Programme, die sich von der 
64K-Karte (= Extended 80 Column Card fur 
den Apple lle) starten lassen, unterbrochen, 
gespeichert, geladen und exakt an der Stelle 
der Unterbrechung fortgefuhrt werden kön- 
nen. Dadurch ist es auch möglich, Siche- 
rungskopien von sogenannten kopierge- 
schützten Programmen herzustellen. 

Mit Softbreaker unterbrochene Programme 
werden komplett, d. h. die ganzen 64K ein- 
schließlich Language Card, in nur ca. 11 Se- 
kunden auf einer formatierten Diskette gesi- 
chert. 

Gerätevoraussetzung: Apple lle mit 64K- 
Karte 


Hüthig Software Service, 
Postfach 10 28 69, D-6900 Heidelberg 


LDX CA2Y 
LDY CU2Y 
JMP STEP4 


LDX CAIY 
LDY CU1Y 


STX Y 
STY. Y2 
INC COUNY 


Für den X-Zåhler testen, was 
wovon subtrahiert werden 
muß! 


*** TRICK NR. 1 *** 


LDA CUIXL 
CMP CU2XL 
LDA CU1XH 
SBC CU2XH 
BCS SUBX2 


SEC 
LDA CU2XL 
SBC CUIlXL 
STA COUNXL 
LDA CU2XH 
SBC CU1XH 
STA COUNXH 
XFLAG 
MOD3 
BEQ MOD4 


SEC 
LDA CU1XL 
SBC CU2XL 
STA COUNXL 
LDA CU1XH 
SBC CU2XH 
STA COUNXH 
LDA XFLAG 
BNE MOD4 

* 

* X-Startpunkte setzen. 

* 

MOD3 LDX CA2XL 
LDY CA2XH 
STX XLOW 
STY XHIGH 
LDX CU2XL 
LDY CU2XH 
JMP REST 


LDX CAIXL 
LDY CA1XH 
STX XLOW 
STY XHIGH 
LDX CU1XL 
LDY CU1XH 


STX XLOW2 

STY XHIGH2 
INC COUNXL 
BNE WEITER 
INC COUNXH 


X-Koordinaten und X-Zåhler 
in die Ablage bringen. 


* * * H 


WEITER LDX XLOW 
LDY XHIGH 
STX TEXL1 
STY TEXH1 
LDX XLOW2 
LDY XHIGH2 
STX TEXL2 
STY TEXH2 
LDX COUNXL 
LDY COUNXH 
STX COXL 
STY COXH 

* 

* Jetzt geht's los! 


* 
LOOP LDA +$2Ø 
STA HPAG 





* 


HSCRN-Routine 


Punkt an oder aus ist 


* * * * 


LDX XLOW 

LDY XHIGH 

LDA Y 

JSR HPOSN 

LDA (GBASL),Y 
AND HMASK 

AND #$7F 


und dann den entsprechenden 
schwarzen oder weiBen Punkt auf 
die neue Stelle plotten. 


* * H * * 


BEQ BLACK 

LDA +$7F ;weiB 

BNE POINT 

BLACK LDA #$Ø ‚schwarz 

POINT STA HCOLORZ 

* 
Grafikseite-Flag (PFLAG) testen 
und entsprechende Vorkehrungen 
für die Übertragung treffen. 


LDA PFLAG 
BEQ PAGE1 
LDA #$4Ø 
STA HPAG 
LDX XLOW2 
LDY XHIGH2 
LDA Y2 
JSR HPLOTO 


X-Zåhler bis auf Ø dekrementie- 


ren, dann nach DOY 


DEC COUNXL 
BNE DOX 
LDA COUNXH 
BEQ DOY 
DEC COUNXH 


Je nach XFLAG X-Koordinaten 
in- oder dekrementieren. 


* 
* 
D 
D 
D 


0X LDA XFLAG 
BNE DECRX 
INC XLOW 
BNE NEXTX 
INC XHIGH 
INC XLOW2 
BNE LOOP 
INC XHIGH2 
BNE LOOP 

* 

* *** TRICK NR. 2 *** 
* 

DECRX LDA XLOW 
BNE DOLL 
DEC XHIGH 
DOL1 DEC XLOW 
LDA XLOW2 
BNE DOL2 
DEC XHIGH2 
DOL2 DEC XLOW2 
JMP LOOP 


Y-Zåhler dekrementieren. 
Ist er Ø, dann erledigt, 
sonst 


U * k*k k * * 


OY DEC COUNY 

BEQ RET2 

* 

* ... je nach YFLAG Y-Koordinaten 
* in- oder dekrementieren und ... 
* 

LDA YFLAG 

BEQ INY 

DEC Y 

DEC Y2 

JMP RSTX 

INC Y 

INC Y2 

E? 

* ... die Start-X-Werte und den 
* X-Zähler wieder für eine 





Ermitteln, ob ein angesprochener 


grafik 94 


29 





6446: 
6448: 
6444: 
644C: 
644E: 
6450: 
6452: 
6454: 
6456: 
6458: 
645A: 
645C: 
645E: 


6461: 
6463: 
6465: 


405 Bytes 


HSCRN 


355 * neue Runde 
356 * 

357 RSTX LDX 
358 LDY 
359 STX 
36Ø STY 
361 LDX 
362 LDY 
363 STX 
364 STY 
365 LDX 
366 LDY 
367 STX 
368 STY 
369 JMP 
STØ * 

371 RET2 LDA 
372 STA 
373 RTS 


* 

XLOW EQU 
XHIGH EQU 
Y EQU 
FLAG EQU 
GBASL EQU 
HMASK EQU 
HPOSN EQU 
* 

* Ermittelt, 


Oo AO OG Q Dr 


= = 
= = 


herstellen. 


TEXL1 
TEXH1 
XLOW 
XHIGH 
TEXL2 
TEXH2 
XLOW2 
XHIGH2 
COXL 
COXH 
COUNXL 
COUNXH 
LOOP 


+$2 
HPAG 


von N.G. Barbieri/1985 


$ØØ 
$Ø1 
$Ø2 
$Ø3 
$26 
$3Ø 
$F411 


ob ein Hires-Punkt 


* weiß oder schwarz ist. 


* Resultat in FLAG: ® = schwarz, 


* 
* 


nicht Ø = weiB. 


XLOW 
XHIGH 

Y 

HPOSN 
(GBASL),Y 
HMASK 
+$7F 

FLAG 


Der nåchste Peeker 
Heft 9/1985 
erscheint am 
26.8.1985 


30 





Einzelbezug DM 28,— 
Fortsetzungsbezug DM 20,— 

(Jederzeit kündbar, jedoch mindestens 
6 Disketten) 

(* = nur auf Diskette, nicht im Peeker 
gelistet! Seitenangaben beziehen sich 
auf Beginn des Listings) 

Hüthig Software Service 

Postfach 102869 - 6900 Heidelberg 1 


Diski 1 
(Heft 1+2, 1984) 


T.DISASSEMBLER.65C02 (1/84, S. 15) 
DISASSEMBLER.65C02 


T.ACCEL.WAIT (1/84, S. 22) 
ACCEL.WAIT 
T.ACCEL.BOOT 
ACCEL.BOOT 
ACCEL.LC.KOPIERER 
T.ACCEL.LC.KOPIE 
ACCEL.LC.KOPIE 
T.ACCEL.ROM.KOPIE1 
ACCEL.ROM.KOPIE1 
T.ACCEL.ROM.KOPIE2 
ACCEL.ROM.KOPIE2 


TURTLE.GRAFIK.MIT.REMS (1/84, S.29) 
TURTLE.GRAFIK.OHNE.REMS * 


DOUBLE.LORES.SOFTSWITCH.DEMO 
(1/84, S. 37) 
DOUBLE.LORES.APPLESOFT.DEMO 
AMPER.DOUBLE.LORES.DEMO 
T.AMPER.DOUBLE.LORES 
AMPER.DOUBLE.LORES 
T.DOUBLE.LORES 

DOUBLE.LORES 


HIRES (1/84, S. 41) 
T.PRINTHIRES 
PRINTHIRES 


DHGR.APSOFT.DEMO (2/84, S. 30) 
AMPER.DOUBLE.HIRES.BAS 
AMPER.DOUBLE.HIRES 
T.AMPER.DOUBLE.HIRES 
DHGR.LINEPLOTTER 


INSTRING.TEST (2/84, S. 43) 
INSTRING.OBJ 
T.INSTRING.OBJ 
INSTRING.LISA.SOURCE 


LOESCHEN.EINES.ARRAYS 
(2/84, S. 52) 


ULTRATERM.ENGLISCH * (2/84, S. 60) 
ULTRATERM.DEUTSCH * 


PRIMZAHLEN.OVERMEYER * 
(2/84, S. 70) 
PRIM.OBJO * 
PRIM.OBJ1 * 


Peeker- 


PRIM.TEST * 
PRIM.TOOLKIT.SOURCE * 


Disk #2 
(Heft 1-2, 1985, DOS-Format) 


T.RAMDISKLC (1-2/85, S. 14) 
RAMDISKLC 


T.IBS.RAMDISKDRIVER (1-2/85, S. 20) 
IBS.RAMDISKDRIVER 


T.AP20.RAMDISKTEST 
AP20.RAMDISKTEST 


T.QUICKCOPY (1-2/85, S. 26) 
QUICKCOPY 
QUICKCOPY.PUFFER 
PRODOS.COPYA 
T.PRODOS.COPYOBJ * 
PRODOS.COPYOBJ 


PRODOS.PATCH (1-2/85, S. 31) 


T.APPLESOFT.FRE (1-2/85, S. 36) 
T.LC.FRE 

LC.FRE 

FRE.TEST 

T.RAM.FRE * 

RAM.FRE 


T.SCHIRMDISK (1-2/85, S. 44) 
SCHIRMDISK.LISA.SOURCE 
SCHIRMDISK 


T.VIDEXT 
VIDEXT.LISA.SOURCE 
VIDEXT 


GETPAS (1-2/85, S. 70) 
T.GETPAS.ASS * 

GETPAS.ASS 
GETDOS.PASCAL.SOURCE 
COPYDUPDIR.PASCAL.SOURCE 


PRODOS.EDITOR.MACROS 
(1-2/85, S. 86) 


Disk #3 
(Heft 1-2, 1985, CP/M-Format) 


STEUER.84 (1-2/85, S. 47) 
PASS.BAS 
MENUE.BAS 
HELP.BAS * 
A.BAS 
B.BAS 
C.BAS 
D.BAS 
E.BAS 
F.BAS 
G.BAS 
H.BAS 
I.BAS 


Peeker 8/85 





Sammeldisketten 


J.BAS 
K.BAS 
L.BAS 
M.BAS 
N.BAS 


Disk +4 
(Heft 3 + 4, 1985) 


TESTGENERATOR (3/85, S. 26) 
SAETZE 

BAHNFAHRT * 

ZU * 

TUN.UND.SOLLEN * 

IRGEND * 


MULTIPRECISION (3/85, S. 32) 


T.WS.TRANSFER (3/85, S. 36) 
WS.TRANSFER 
T.WS.TRANSFER.2 * 
WS.TRANSFER.2 * 

GETCPM 


PRIM.0.SC.SOURCE (3/85, S. 62) 
PRIM.O.BIN 


PRIM.1.5SC.SOURCE 
PRIM.1.BIN 
PRIM.FP 


ACCELERATOR.ABSTELLEN 
(3/85, S. 66) 


T.WILDCARD.TEST * (3/85, S. 72) 
WILDCARD.TEST1 * 
T.WILDCARD.TEST2 * 
WILDCARD.TEST2 * 


XPLOT.DEMO (4/85, S. 18) 
XPLOT.ROUTINE 
T.XPLOT.ROUTINE 


MENUE.GENERATOR (4/85, S. 22) 
T.MACROS.65C02 (4/85, S. 31) 


TERMINAL (4/85, S.36) 
TERMINAL.B 
T.TERMINAL.B 


CAT.ARRAY (4/85, S. 44) 
CAT.SAVER 
EINTRAG.SUCHER 
EINTRAG.ANALYSE 
PRODOS.READER 
T.PRODOS.READER.OBJ 
PRODOS.READER.OBJ 


MOUSESTUFF.PASCAL.SOURCE 
(4/85, S. 51) 
MOUSE.ASS.PASCAL.SOURCE 
TESTMOUSE.PASCAL.SOURCE 
DRAWMOUSE.PASCAL.SOURCE 


INALL.DATA (4/85, S. 70) 
SCREEN80.DATA (4/85, S. 33) 


Peeker 8/85 


SCREEN80.SAVER (4/85, S. 76) 


Disk #5 
(Heft 5, 1985, DOS-Format) 


T.FM.BSP (5/85, S. 9) 
FM.BSP 


T.SLOTRAMDISK (5/85, S. 13) 
SLOTRAMDISK 
SLOTRAMDISK.HELLO 


PLOT.2.0 (5/85, S. 20) 
T.PLOT.B 

PLOT.B 
PLOT.PROTECTOR 


T.CONVERT560 (5/85, S. 26) 
CONVERT560 
CONVERT560.DEMO 


T.EDA (5/85, S. 33) 
EDA 


TRANSCEND.PASCAL.SOURCE 
(5/85, S. 36) 


T.BLOCKTRACER (5/85, S. 51) 
BLOCKTRACER 
T.BLOCKTRACER1 
BLOCKTRACER1 


FORMAT.LC (5/85, S. 56) 
FORMAT.LC.START 


T.DISKDRIVER.DEMO 
DISKDRIVER.DEMO 


RANDOM.DEMO (5/85, S. 69) 
COLUMN80.DEMO 


SUPERDUMP.EPSON (6/85, S. 22!) 
SUPERDUMP.IMAGEWRITER 
SUPERDUMP.BILD 
T.SUPERDUMP x 

SUPERDUMP 

EPSON 

IMAGEWRITER 


Disk #6 


HELLO (6/85, S. 72) * 
ASMDIV * 


CURSOR1 (6/85, S. 6) 
T.CURSOR1 
CURSOR2 
T.CURSOR2 
LINIE 

T.LINIE 

VIERECK 
T.VIERECK 

BOX 

T.BOX 
HINTERGRUND 
T.HINTERGRUND 


PAGE.SWAP 
T.PAGE.SWAP 


WANDERNDER.STRICH (6/85, S. 16) 
KOMPRESSOR.DEMO 

KREIS.1 

KREIS.2 

KREIS.3 

FLIPPER 

T.FLIPPER 

KOMPRESSOR 

T.KOMPRESSOR 


OLYMPIA (6/85, S. 34) 
T.OLYMPIA 


FOURIER.MAIN (6/85, S. 38) 
FOURIER.SYN 
FOURIER.SPEC 


AS.ERWEITERUNG (6/85, S. 43) 
T.AS.ERWEITERUNG 
AS.ERW.PROSTART 
AS.ERW.PRO * 

T.AS.ERW.PRO x 


INSTALL.PASCAL.SOURCE 
(6/85, S. 48) 

RAMDISK94.PASCAL.SOURCE 

INIT.PASCAL.SOURCE 


RAMDISK.INIT.DOS (6/85, S. 55) 
AUXDRIVER 

T.AUXDRIVER 

MOVEDRIVER 

T.MOVEDRIVER 
RAMDISK.FORMATTER 
T.RAMDISK.FORMATTER 


SOLITAIRE.START (6/85, S. 64) 
SOLITAIRE 

SOLITAIRE.B 

T.SOLITAIRE.B 


Disk #7 


PYRAMID.PITTY (7/85, S. 6) * 
T.PYR.PITTY.O * 
T.PYR.PITTY.1 * 

PYR.PITTY.O * 

PYR.PITTY.1 * 
PYR.PITTY.BACK * 
PYR.PITTY.SHAPE * 


T.MEGAWARP.REL (7/85, S. 8) * 
MEGAWARP.REL * 
T.MEGAWARP.9900 
MEGAWARP.9900 

T.SPEEDTEST 

SPEEDTEST 


FORMAT (7/85, S. 20) 
T.FORMAT.OBJ 
FORMAT.OBJ 


BITEDITOR (7/85, S. 29) 
NORMAL * 


FETT a 
FETT.INVERSE a 


PASTOPRO.1D (7/85, S. 62) * 
PASTOPRO.2D 
T.PASTOPRO.O 
PASTOPRO.O 


T.CONVERT (7/85, S. 69) 
CONVERT 


T.VORLESER (7/85, S. 71) 
VORLESER 


Disk #8 
(Heft 8, 1985, DOS-Format) 


HELLO * 
ASMDIV * 


DISKTEST (8/85, S. 14) 
DISKTEST.START 
T.DISKTEST 


KOPY (8/85, S. 22) 
BATCHKOPY 
T.GETSETINFO 
GETSETINFO 


BILDTEST 


T.BOX.COPY (8/85, S. 26) 
BOX.COPY 

T.HSCRN 

HSCRN 
GRAF.QUATTRO.1 


T.DOUBLE.LORES (8/85, S. 34) 
DOUBLE.LORES 
DOUBLE.LORES.DEMO 


START.CMD x (8/85, S. 40) 
HMENUE.CMD * 
AUFNAHME.CMD x 
AUFMASKE.CMD x 
AUSGABE.CMD * 
SUCH.CMD * 
EDITFNAME.CMD * 
SUCHVNAME.CMD x 
SUCHBEME.CMD x 
SCHREIBA.CMD x 
SCHREIBL.CMD * 
LOESCH CMD x 


IDSEARCH.PASCAL.SOURCE 
(8/85, S. 49) 


FAKULTAET.DEMO (8/85, S. 57) 
T.FAKULTAET 

FAKULTAET 

GRAFIK.DEMOS (8/85, S. 68) 
ZEICHENJAGD (8/85, S. 70) 


T.RAM.FRE.NEU (8/85, S. 70) * 
RAM.FRE.NEU 


31 





Double-Lores- 
Applesoft- 
Erweiterungen 


von Karl-Walter Bott 





Wenn Sie einen Apple lle mit einer erwei- 
terten 80-Zeichenkarte oder einen Apple 
Ilc besitzen, dann können Sie mit der hier 
vorgestellten Software den Applesoft-In- 
terpreter um sechs neue Grafik-Befehle 
erweitern. 


Die erweitere 80-Zeichenkarte für den Ap- 
ple lle stellt zu den bereits vorhandenen 
64K RAM auf dem Motherboard weitere 
64K RAM zur Verfügung, die sich auf viel- 
fältige Weise einsetzen lassen. Eine dieser 
Möglichkeiten besteht darin, die Auflösung 
der Lores-Grafik zu verdoppeln, so daß 80 
mal 48 Kästchen darstellbar sind. Über die 
Organisation und die Programmierung der 
Double-Lores-Grafik wurde bereits im 
Peeker 1/84 ausführlich berichtet. 

Die Programmierung von Double-Lores in 
Applesoft-BASIC erweist sich als sehr 
umständlich, da der Interpreter keine Be- 
fehle zur Erstellung von Double-Lores- 


32 








Peeker 8/85 








Grafiken enthålt, wie man sie von der nor- 
malen niedrigauflósenden Grafik gewonnt 
ist. 


Das hier vorgestellte Software-Paket im- 
plementiert die fehlenden Befehle, so daB 
Applesoft-Programmierer die Double-Lo- 
res-Grafik nutzen können, ohne detaillier- 
te Kenntnisse über deren rechnerinterne 
Organisation zu besitzen. 


schaltet und die erweiterte 80-Zeichenkar- 
te desaktiviert. 

Dieser Befehl sollte nur dann benutzt wer- 
den, wenn die 80-Zeichenkarte vor Aufruf 
von &GR nicht aktiv war, da ansonsten 
Softswitch-Probleme auftreten. Wurde die 
Double-Lores vom 80-Zeichenmodus aus 
aktiviert, genügt ein TEXT-Befehl zum Zu- 
rückschalten. 





Die neuen Befehle 


&GR - Das &GR-Statement veranlaßt den 
Computer, auf doppelt-niedrigauflösende 
Grafik umzuschalten. Dabei wird der Bild- 
schirm gelöscht und vier Textzeilen am 
unteren Bildschirmrand bereitgestellt. Die 
Darstellung auf dem Bildschirm erfolgt 
jetzt in einem 80-mal-40-Raster. 

Will man die ganze Seite mit Grafik ausful- 
len (80 mal 48 Punkte), so muß zunächst 
durch 

POKE 49234,0 

auf Full-Screen-Ausgabe umgeschaltet 
werden. Um die acht Grafikzeilen am unte- 
ren Bildschirmrand zu löschen, verwende 
man dann folgende Befehle: 

POKE 49236,0: CALL 63538 

POKE 49237,0: CALL 63538. 

Hierdurch wird der ganze Bildschirm ge- 
löscht und wie oben die Farbe schwarz 
eingestellt (COLOR = 0). 


& TEXT - Dieser Befehl schaltet von Dou- 


ble-Lores-Grafik auf Textdarstellung um. 
Es wird der 40-Zeichen-Textmodus einge- 


Peeker 8/85 


&PLOT — Der &PLOT-Befehl zeichnet ein 
Kästchen in der aktuellen Farbe auf dem 
Double-Lores-Bildschirm. Der erste Aus- 
druck, der dem Schlüsselwort „&PLOT“ 
folgt, gibt die Spalte an, in der das Käst- 
chen gezeichnet werden soll (zwischen 
0...79, von links nach rechts); der zweite 
Ausdruck, durch ein Komma vom ersten 
getrennt, bestimmt die Zeile (0...47, von 
oben nach unten). 


Beispiel: „&PLOT 10, 15“ plottet einen 
Block in Spalte 10, Zeile 15. 

Der normale PLOT-Befehl wurde dahinge- 
hend erweitert, daß jetzt — wie unter HGR 
— auch Linien zwischen zwei oder mehre- 
ren beliebigen Punkten gezeichnet wer- 
den können. 

Beispiel: ,&PLOT 0, 0 TO 79, 47" zeich- 
net eine diagonale Linie von links oben 
nach rechts unten in der aktuellen Farbe. 
Liegen die angegebenen Koordinaten au- 
Berhalb des zulåssigen Bereichs, wird das 
Programm unterbrochen und die Meldung 
„ILLEGAL QUANTITY ERROR“ ausge- 
geben. 


Grafik 444 


&HLIN — Das &HLIN-Statement zeichnet 
eine horizontale Linie in der aktuellen Far- 
be. Die beiden Ausdrucke, die dem Befehl 
, &HLIN" folgen, bestimmen die Spalten- 
nummern, in denen der Anfang und das 
Ende der Linie liegen. Der Ausdruck, der 
dem Schlusselwort „AT“ folgt, bestimmt 
die Zeile, in welcher die horizontale Linie 
gezeichnet werden soll. 

Beispiel: ,&HLIN 20, 60 AT 10" zeichnet 
eine horizontale Linie in Zeile 10 von Spal- 
te 20 bis Spalte 60. 

Wird die zulåssige Spalten- oder Zeilen- 
zahl Uberschritten, wird eine Fehlermel- 
dung ausgegeben und das Programm un- 
terbrochen. 


&VLIN — Das &VLIN-Statement zeichnet 
eine vertikale Linie. Die beiden folgenden 
Ausdrücke bestimmen Anfangs- und End- 
Zeile der Linie, während der Ausdruck 
nach „AT“ die Spalte bestimmt, in der die 
Linie gezeichnet wird. 

Beispiel: „&VLIN 10, 30 AT 20“ zeichnet 
eine vertikale Linie in Spalte 20 von Zeile 
10 bis Zeile 30. 

Bei Überschreiten der zulässigen Spalten- 
oder Zeilenzahl wird eine Fehlermeldung 
ausgegeben und der Programmablauf un- 
terbrochen. 


&SCRN — Der &SCRN-Befehl ermittelt die 
Farbe eines angegebenen Blocks auf dem 
Double-Lores-Bildschirm. Der Wert, den 
die Funktion zurückgibt, liegt zwischen 0 
und 15, und wird der angegebenen Varia- 
blen zugewiesen, die wahlweise vom Typ 
Integer oder Real sein kann. 

Beispiel: „&SCRN(A, 50, 10)" ermittelt 
die Farbe des Blocks in Spalte 50, Zeile 
10. Die Variable A hat dann einen Wert 
zwischen 0 und 15. 

Wenn die Variable nicht dem zulässigen 
Typ entspricht (z.B. A$) oder die zulässi- 
gen Grenzen für die Koordinatenangaben 
überschritten werden, erfolgt eine Fehler- 
meldung. 


Der normale COLOR-Befehl kann weiter- 
hin verwendet werden, um die gewünsch- 
te Farbe eines Blockes zu definieren, wo- 
bei der Ausdruck rechts vom Gleichheits- 
zeichen zwischen O und 15 liegen muß. 
Beispiel: „COLOR = 15“ wählt die Farbe 
weiß aus. 


Technische Anmerkungen 


Das Programm residiert ab Adresse 
$931A im Hauptspeicher und ist 742 Bytes 


33 





lang, kann aber durchaus auch mit einer 
anderen Startadresse assembliert werden. 
(Anm.: Dies ist insbesondere für ProDOS 
erforderlich. Unter DOS 3.3 liegt das Pro- 
gramm unterhalb von $9600, d.h. im Be- 
reich $931A-$95FF unterhalb vom dritten 
DOS-Puffer bei Maxfiles 3. Man könnte es 
auch unterhalb von $9A00 legen und die 
DOS-Puffer entsprechend nach unten ver- 
schieben. Unter ProDOS muß es unter- 
halb von $9A00 liegen, d.h. im Bereich 
$971A-$99FF, weil es sonst durch einen 
Textfile-Zugriff zerstört würde. Zu diesem 
Zweck muß man über die GETBUFR-Rou- 
tine 3 Pages anfordern und dann das Pro- 
gramm mit BRUN DOUBLE.LORES star- 
ten. Aus all diesen Gründen wird HIMEM 
durch DOUBLE.LORES nicht geändert. 
us) 

Um die neuen Applesoft-Befehle in den 
Interpreter einzubinden, wurde der Am- 
persand-Vektor verwendet. Er bietet eine 
bequeme Möglichkeit, eigene Routinen 
ohne Geschwindigkeitsverlust an den In- 
terpreter anzuhängen. 

Jedesmal, wenn der Interpreter auf das &- 
Zeichen trifft, verzweigt er zur Adresse 
$03F5, in der normalerweise ein Sprung 
zu einem RTS-Befehl steht. An dieser 
Stelle wird nun ein Sprung zum eigenen 
Programm eingetragen. 

Stößt der Interpreter auf das &-Zeichen, 
so verzweigt er zum Anwenderprogramm, 
das zunächst überprüft, welcher Token 
vorliegt, um zu dem entsprechenden Pro- 
grammsegment zu springen. Nach Aus- 
führung des jeweiligen Befehls wird der 
Textpointer bis zum nächsten Applesoft- 
Befehl vorgerückt und DOUBLE.LORES 
über einen RTS-Befehl verlassen. 


Konflikte mit 40/80-Z/Z 


Es empfiehlt sich, vor Aktivierung der 
Double-Lores die 80-Zeichenkarte mit 
„PRINT CHR$(21)“ oder „ESC Ctrl-Q" 
abzustellen, um Speicherkonflikte zu ver- 
meiden und das korrekte Arbeiten des 
&TEXT-Befehls zu gewährleisten. 

Sollten Sie keine Double-Lores-Grafik auf 
dem Bildschirm sehen, kann das an Ihrer 
erweiterten 80-Zeichenkarte liegen. Ent- 
weder Sie besitzen eine Nachbau-80-Zei- 
chenkarte, die nicht über die entsprechen- 
den technischen Möglichkeiten verfügt, 
oder die Karte ist nicht korrekt installiert. 
Lesen Sie dazu das entsprechende Kapi- 
tel im Handbuch zur 80-Zeichenkarte. 


Bei gemischter Darstellung (Text und Gra- 
fik) beachten Sie bitte folgendes: 


34 


DOUBLE.LORES 


931A: 
9316: 
931F: 
9321: 
9324: 
9326: 
9329: 


9324: 
932C: 
932E: 
9330: 
9332: 
9334: 
9336: 
9338: 
933A: 
933C: 
933E: 
934Ø: 


F5 Ø3 


F6 Ø3 


OMSDANANGUNKE 


ORG 
* 
* 
* 
* 
* 
* 
* 
DH Tokens 
* 
TPLOT EQU 
TGR EQU 
THLIN EQU 
TVLIN EQU 
TSCRN EQU 
TTEXT EQU 
TO EQU 
AT EQU 


* 


$931A 


Double-Lores 1.0 


K.-W. Bott, 1985 


$8D 
$88 
$8E 
$8F 
$D7 
$89 
$C1 
$C5 


D Applesoft-Routinen 


* 
AMPER EQU $Ø3F5 : Ampersand-Vektor 
TABV EQU $FB5B ;Cursor vertikal tabulieren 
CLRTOP EQU $F836 :Lores-Schirm löschen 
PLOT EQU $F8ØØ :Block plotten 
SCRN EQU $F871 ;Lores-Screen-Befehl 
CHRGET EQU $ØØB1 ‚Zeichen aus BASIC 
GETBYT EQU $E6F8 ‚Byte aus BASIC 
SYNCHR EQU $DEC® Zeichen im AREG 
* ‚mit BASIC vergleichen 
SNERR EQU $DEC9 ; "SYNTAX ERROR" 
ILQUAN EQU $E199 ;"ILLEGAL QUANTITY" 
PTRGET EQU $DFE3 ;Pointer auf Variable 
D ‚aus BASIC-Text 
SNGFLT EQU $E3Ø1 : YREG -> FAC 
D 
* Konstanten 
* 
PAGE1 EQU $C054 ;Hauptspeicher 
PAGE2 EQU $CØ55 ;Zusatzspeicher 
CHAR EQU $B8 :aktuelles Zeichen im 
* ;BASIC-Text 
POINTER EQU $CE ‚Zeiger für Puffer 
VARNAM EQU $81 Letzte BASIC-Variable 
SUBFLG EQU $14 ‚Flag für Var.-behandlung 
FAC EQU $9D ;Float.-Akkumulator 
WNDTOP EQU $22 ;obere Begrenzung des 
* :Scroll-Windows 
* 
* Speicherplatz für Koordinaten 
* 
xl EQU $Ø6 
X2 EQU $97 
Yl EQU $Ø9 
Y2 EQU $E3 
XS EQU $D7 ;Schrittweite X 
YS EQU $EB ;Schrittweite Y 
XD EOU $CF ‚Differenz Xl - X2 
YD EQU $EF ‚Differenz Yl - Y2 
E? 
E? 
* Ampersand-Vektor linken 
* 
START LDA #$4C : JMP 

STA AMPER 

LDA #<LINK 

STA AMPER+1 

LDA #>LINK 

STA AMPER+2 

RTS 
* 
* Einsprung für jeden Ampersand- 
* Befehl; Token im A-Register 
* 
LINK CMP #TGR 

BEQ GR 

CMP #TTEXT 

BEQ TEXT 

CMP +TPLOT 

BEQ JPLOT 

CMP #THLIN 

BEQ HLIN 

CMP +TVLIN 

BEQ JVLIN 

CMP #TSCRN 

BEQ JSCRN 


Peeker 8/85 





1. Ein &PLOT-Befehl über die 39. Grafik- 
zeile hinaus druckt ein Zeichen in die un- 
teren vier Textzeilen. 

2. Die erweiterte 80-Zeichenkarte sollte 
vor Aktivierung der Double-Lores-Grafik 
eingeschaltet sein und eingeschaltet 
bleiben. 

3. War die 80-Zeichenkarte aktiviert, so ist 
der TEXT-Befehl zum Zuruckschalten zu 
verwenden, ansonsten &TEXT. 


Bei reiner Grafikdarstellung ist folgendes 

zu berücksichtigen: 

1. Benutzen Sie die oben erwähnten 

POKE- und CALL-Befehle, um die unteren 

vier Zeilen für Grafik freizuhalten. 

2. Jeder PRINT-Befehl druckt Zeichen in 

den Bildschirmspeicher, die als Farbblök- 

ke auftreten. 

3. Selbst ein GET-Befehl erzeugt einen 

farbigen Block, da der Cursor sichtbar 

wird. Um dies zu vermeiden, kann die 

Eingabe eines Zeichens von der Tastatur 

z.B. wie folgt vorgenommen werden: 

10 ON PEEK (49152) < 128 GOTO 10:A$ 
= CHR$ (PEEK (49152) - 128): 
POKE 49168,0 

4. Für das Zurückschalten gilt das gleiche 

wie oben. 


Das Programm DOUBLE.LORES.DEMO 
zeigt eine Anwendung der neuen Befehle 
und die Umschaltung auf reine Grafik- 


Ausgabe. = 


` yonsAor 


-uey !ISMZ UOA gnjyosuy WNZ LHOdAOP 


` dnyoeg `n WVH Lw (1289) pieO-VId Sp GAV 
` dnyoeg `n WVH Lw (2299) pieO-VIA ‘az GAV 





` Mat ‘08Z 


ayn EL-OL Ee 
` (eqnedwoy-eiddy "ët 'OƏd-II NOSIN 


- "IQ “yn 81-21 Ou :JNBYUEAUSPET 


` d 9S dd 9V31 


YINMSHOS UƏYIIƏZ 08 


"ISMN "MU! "MOIS oid ƏSIÐId 
` ZEZ SU 'SOINOHLN3D 'WOUdA “Yd 


` WIIG jequedwoy-ejddy 9811 Ob ‘E01 AAT 


` yoyedoyny FCO 19llonuoO-Iud-1 
` ƏSƏ] JYƏS Sq JIL 08 S9r VS Meßnys 
uonynpoid aySINEp pusyaßbyam 


JOv4UAILNI 3 TddV 


(Ine»EAuepe SIM) EOELEEB-0EO uojəle L 


“un 81-51 'OG 


0802 VAL 
00 LOHPZ 

00 S1r¿ 

Ndo v08Z 
SUNGZ-9GZLCZ 
SUNSGZ-8Z LLC 
SUNSZ-v9LZ 
SUOSP-ZEZZ 
SUOSP-9LZZ 
SU0SF-8022 

(9102 WYS) E41 9119 
G861 `S 62 PULIS 


ITILNISTM 


yuq JOH WW G (37 

JOH wu 8 q37 

DIS OL Ileysedns JOH wwg (37 
SLO 993 H$ WNL 

4eJOIMV v9LD YSN 

su0SL-#9Lr Adn 

su00Z-9L Lt Adn 


jayejsusßueyy pun ejaneg oe 


Gy umag 0001 : Z4 6əwuəzinuocsəpiue9 - 19q10M OS YUEL `L 
yuq qjəÐ `o ung ww s q31 


a OsOIW-aNOlSSWSL 9 


WO OS Li NN !8q ‘YA Jepo NN Jed puesion 


wa —'g 6 osz siq :BurmpedugA pun OOd NO —'01 + Isuos ‘wa 


—'0S UƏMISISƏQISƏPUIW `V Su 





Peeker 8/85 





SNERR 


SPLOT 
VLIN 
SCREEN 


Double-Lores initialisieren 


und Bildschirm löschen 


LDA 
LDA 
LDA 
STA 
STA 
LDA 
LDA 
STA 
LDA 
JSR 


J k ÅÅÅ 


STA 
STA 
LDA 
LDA 
LDA 
.LDA 
STA 
JMP 


&HLIN X1, 


Apple und IBM 
kompatible Computer 


16K, Z80, Diskcontroler je ................... 110,- 
80 Zeichenkarte mit Softswitch 

2 Zeichensåtze ................................ (EL) 
Motherboard 48K ohne 
EG een 610,— 
Erphi-controler mit Autopatch .............. 300,— 
Siemenslaufwerk F 122 ....................... 515,- 
Philips X3134 2x80 Track ................... 465,- 
TEAC FD-55B 2x40 Track ................... 468,— 
TEAC FD-55F 2x80 Track ................... 565,- 
Neu: Stardrucker SG 10............. 920,— 
Monochrome Monitore .................... ab 375,- 
Ié rei ine ab 998,— 
Tastaturen für IBM und Apple ........ ab 330,— 


Versand nur per Nachnahme oder Vorkasse 


Weiteres Zubehör für Apple und IBM gegen 
frankierten Rückumschlag. 


Preissenkung: 
128K Karte (Saturn kompatibel) .... 395,— 


Zusatzkarten und Motherboard ausnahmslos 
deutsche Fertigung mit ausgesuchten Bauteilen. 


Ulf Mohwinkel Electronic 
Berliner StraBe 73 
5090 Leverkusen Fettehenne 
Telefon 0214/937 81 


$CØ5Ø 
$CØ56 
$CØ53 
$CØØ1L 
$CØØD 
$C@5E 
#2Ø 
WNDTOP 
+23 
TABV 
PAGE2 
CLRTOP 
PAGE1 
CLRTOP 
CHRGET 


in den Textmodus 


$CØØØ 
$CØØC 
$CØSF 
$CØ51 
PAGE1 
+Ø 
WNDTOP 
CHRGET 


X2 AT Y 


CHRGET 
GETBYT 
+80 
ERROR 



































APPLE //e 


m 80 gestochen scharfe und flimmerfreie Zeichen / Zeile 
m plus zusåtzliche 64 KByte schnelle dynamische RAM's 
m ermöglicht Double Hires Graphik ( 560 * 192 Punkte ) 
m vergoldete Steckerleiste und Qualitåtsbauteile 
Geprüfte Platine + Demo Disk + Beschreibung DM 174,50 
Bausatz DM 145 .- W Leerplatine + Bauanleitung DM 59.- 
Ab Lager lieferbar. Alle Preise inklusive Mehrwertsteuer. 


DOBBERTIN 
INDUSTRIE-ELEKTRONIK 


Brahmsstraße 9, 6835 Brühl, Tel. (06202) 71417 





: GRAFIK 
; LORES 
;MIXSET 
; SØSTORE 
; SØCOL 
ANA 


:Scroll-Window begrenzen 
:Cursor in Zeile 23 
‚setzen 


:Zusatzspeicher löschen 


‚Hauptspeicher löschen 
:Textptr. vorrücken 
‚und Return nach BASIC 


; 4ØSTORE 
; 4ØCOL 

; ANS OFF 
; TEXT 


:volles Scroll-Window 
;Txtptr. ink. —> BASIC 


; TXTPTR vorrücken 
‚Param. Xl aus BASIC-Text 
:X1 > 79? 


APPLE //e 
— APPLE IL 


"und kompatible Computer 


Universeller EPROM-Programmer 4003 


m Programmiert alle gängigen EPROM-Typen (z.B.: 2716, 
2732,-64,-128,2508,-16,-32,-64...) Voll menügesteu- 
erte Software auf Diskette mH Kein Schalten, Löten oder 
Stecken nötig & Programmierspannung wird im Gerät er- 
zeugt m Verbindung zum Rechner über Flachbandkabel 8 
Rote und grüne Leuchtdiode zur Betriebsart-Anzeige Æ 


Komplett mit 28 poligem Textool-Sockel 8 
Fertiggerät DM 269,50 m Bausatz + Anleitung DM 219.- 


80 Zeichen Karte 
+64 KByte RAM 


35 


DC 


S8/8 194994 


ERROR JMP 

` 

* &VLIN Y1, 

* 

` 

VLIN JSR 
JSR 
CPX 
BCS 
STX 
LDA 
JSR 
JSR 
CPX 
BCS 
STX 
LDA 
JSR 
JSR 
CPX 
BCS 
STX 
STX 
JSR 
LDA 
RTS 


U Å 


CREEN JSR 
JSR 


* 


LDA 
JSR 
JSR 
LDA 
LSR 
BCC 
LDX 
BCS 
LDX 
TAY 
LDA 
JSR 
JSR 


&SCRN (VAR, 


X1 
#',' 
SYNCHR 
GETBYT 


LINPLOT 
PAGE1 


ILQUAN 


Y2 AT X 


CHRGET 
GETBYT 
+48 
ERROR 
Y1 
#',' 
SYNCHR 
GETBYT 
+48 
ERROR 
Y2 

+AT 
SYNCHR 
GETBYT 
+80 
ERROR 
Ki 

x2 
LINPLOT 
PAGE1 


X, Y) 


CHRGET 
GETADR 


a. 
SYNCHR 
GETVAL 
xl 


S2 
PAGE1 
OKAY 
PAGE2 


Yl 
SCRN 
GIVBACK 


; Komma? 
;Param. X2 aus BASIC-Text 
32 > 797 


ea. 
;Param. Y aus BASIC-Text 
"Ý > 47% 


;Linie plotten 
:sicher ist sicher ... 
¿zurück zu BASIC 


;Txtptr. vorrücken 
:Param. Y1 aus BASIC 
syl > 47? 

;Komma? 

:Param. Y2 aus BASIC 
42 > 477 

«TATT 


"baran X aus BASIC 
SE > 79 


:Linie zeichnen 


¿zurück zu BASIC 


Farbwert des Blockes X, Y bestimmen 
und in BASIC-Variable übertragen 


;Txtptr. vorrücken 
"Adr. und Typ der 
‚Variablen feststellen 
;Komma? 


:Werte X, Y aus BASIC 


;A = A / 2 
;gerader Wert -> PG2 


‚ungerade -> PG1 


;X -> YREG 

;Y -> AREG 

;Farbe im AREG 
;Farbcode der Variablen 





9415: 
9418: 


941B: 
941E: 
942Ø: 
9422: 
9424: 
9426: 
9429: 


942C: 
942E: 
943Ø: 
9432: 


9434: 


9437: 
9439: 
943A: 
943C: 
943D: 
9440: 
9442: 
9444: 
9446: 
9448: 
9449: 
944B: 
944C: 


944E: 
9451: 


9454: 
9457: 


9458: 
945B: 
945D: 
945F: 
9461: 
9463: 
9466: 
9469: 
946B: 
946D: 
946F: 


947Ø: 


AD 
4C 


54 
Bl 


Bl 
00 
B8 
cl 
ØE 
58 
73 


øp 
B8 
Cl 
20 


B1 


SA 
2C 


54 


F8 
50 
11 
06 
2C 
cø 
F8 
30 
03 
09 


99 


cØ 
00 


00 


94 
94 


ØØ 


94 


94 
94 


cø 


EG 


DE 
E6 


El 


202 
203 
204 
205 
206 
207 
208 
209 
210 
211 
212 
213 
214 
215 
216 
217 
218 
219 
220 
221 
222 
223 
224 
225 
226 
Ca 
228 
229 
230 
231 
232 
233 
234 
235 
236 
237 
238 
239 
240 
241 
242 
243 
244 
245 
246 


247 
248 


249 
250 
251 
252 
253 
254 
255 
256 
257 
258 
259 
260 
261 
262 
263 
264 
265 
266 


LDA 
JMP 


* * * 


æ &PLOT Xl, Yl TO X2, Y2 


` 

* 

SPLOT JSR 
LDX 
LDA 
CMP 
BEQ 
JSR 
JSR 

D 

PLOTTO LDX 
LDA 
CMP 
BNE 

D 

CTO JSR 

* 


* Neue Param. 


* 
LDA 
PHA 
LDA 
PHA 
JSR 
LDA 
STA 
LDA 
STA 
PLA 
STA 
PLA 
STA 


JSR 
JMP 


EXIT LDA 
RTS 


PAGE1 
CHRGET 


CHRGET 
+Ø 

( CHAR, X) 
+TO 

CTO 
GETVAL 
EXPLOT 


+Ø 
(CHAR, X) 
+T0 
EXIT 


CHRGET 


‚zuordnen 


;Txtptr. vorrücken 
¿Return nach BASIC 


;Txtptr. vorrücken 


"keine Param. holen 


;Punkt plotten 


"kein 'TO' -> Ende 


;Txtptr. vorrücken 


holen und Xn, Yn <--> Xn+1, Yn+1 


Xl 


Xl 


LINPLOT 
PLOTTO 


PAGE1 


;Linie plotten 
.. zum Anfang 


;—> BASIC 


GETVAL holt die X- und Y-Parameter 


D 
D 
* aus dem BASIC-Text 
* 
G 


ETVAL JSR 

CPX 

BCS 

STX 

LDA 

JSR 

JSR 

CPX 

BCS 

STX 

RTS 
D 

FEHLER JMP 
` 


GETBYT 
+80 
FEHLER 
x] 

` 
SYNCHR 
GETBYT 
#48 
FEHLER 
Yl 


ILQUAN 


;Byte holen 
X > 797 


;Syntax ok.? 
;Byte holen 
Ý > ÆTT 


* EXPLOT plottet einen Punkt mit 
* den Koordinaten X1, Yl auf dem 





S8/8 1949Əd 


ZE 


* Double-Lores-Schirm 94D7: FØ 17 332 BEQ NOCOR2 ; ETERM = Ø 
* 94D9: 18 333 CLC 
EXPLOT LDA X1 ;X —> AREG 94DA: A5 Ø6 334 LDA X1 
LSR ;X = X / 2 94DC: 65 D7 335 ADC XS ;X1 = X1 + XS 
BCC ;gerade -> Zusatssp. 94DE: 85 Ø6 336 STA Xl 
LDY 94EØ: 38 337 SEC 
BCS 94E1: A5 CF 338 LDA XD 
LDY 94E3: E5 EF 339 SBC YD 
TAY ;X —> YREG 94E5: ØA 34Ø ASL 
LDA :Y —> AREG 94E6: 18 341 CLC 
JSR ;Block plotten 94E7: 6D A9 95 342 ADC ETERM 
LDA 94EA: 8D A9 95 343 STA ETERM ;ETERM = ETERM + 2 * (XD - YD) 
RTS 94ED: 4C FA 94 344 JMP LAB3 
* 94FØ: A5 CF 345 NOCOR2 LDA XD 
* LINPLOT plottet eine Linie 94F2: ØA 346 ASL 
* zwischen zwei Punkten 94F3: 18 347 CLC 
* 94F4: GD A9 95 348 ADC ETERM 
LINPLOT LDA zl 94F7: 8D A9 95 349 STA ETERM ;ETERM = ETERM + 2 * XD 
STA XS = 94FA: 18 350 LAB3 CLC 
STA YS = 94FB: A5 EB 351 LDA YS 
94FD: 65 Ø9 352 ADC Y1 
SEC 94FF: 85 Oo 353 STA Yl ;Yl = Yl + YS 
LDA 95Ø1: 4C CC 94 354 JMP LOOP2 
SBC 9504: 4C 73 94 355 READY2 JMP EXPLOT 
STA ; 356 * 
357 * BRENSENHAM-Algorithmus XD >= YD 
SEC 358 »* hier ETERM eine 16-Bit-Signed-Number 
LDA Y2 359 * 
SBC Yl 9507: A5 EF 360 DDA LDA YD 
STA YD ; YD Y2 — Y1 9509: 8D AB 95 361 STA TMP 
950C: A9 og 362 LDA #9 
Setzen der Schrittweite für Liniengenerator 95ØE: 8D AC 95 363 STA TMP+1 
9511: ØE AB 95 364 ASL TMP 
BIT XD 9514: 2E AC 95 365 ROL TMP+1 
BPL LAB1 9517: 38 366 SEC 
BIT YD 9518: AD AB 95 367 LDA TMP 
BMI CASE1 DX < Ø & DY < Ø 951B: E5 CF 368 SBC XD 
BPL CASE2 ;DX < Ø & DY >= Ø 951D: 8D A9 95 369 STA ETERM 
BIT YD 9520: A9 ØØ 37Ø LDA +Ø 
BMI CASE3 ;DX DY < Ø 9522: E9 ØØ 371 SBC +Ø 
BPL FERTIG ;DX DY >= Ø 9524: 8D AA 95 372 STA ETERM+1 ;ETERM = 2 * YD — YX 
CASE1 JSR MIYS :YS 9527: A6 CF 373 LDX XD ;XREG = Zähler 
CASE2 JSR MIXS ;XS 9529: E8 374 INX 
JMP FERTIG 952A: CA 375 LOOP DEX 
CASE3 JSR MIYS ; YS 952B: FØ 5D 376 BEQ READY1 ;Linie fertig 
* 952D: 2Ø 73 94 377 JSR ` EXPLOT PLOT (X, Y) 
FERTIG LDA XD 9530: AD AA 95 378 LDA ETERM+1 
CMP YD 9533: 3Ø 39 379 BMI NOCOR 
BPL DDA ;XD >= YD 9535: DØ Ø5 389 BNE MARK 
* 9537: AD A9 95 381 LDA ETERM 
* BRENSENHAM-Algorithmus fir YD > XD 953A: FØ 32 382 BEQ NOCOR 
* (Modifizierter Digital-Differential-Analyzer DDA) 953C: 18 383 MARK CLC 
H 953D: A5 09 384 LDA Y1 
LDA XD 953F: 65 EB 385 ADC YS 
ASL 9541: 85 Ø9 386 STA Yl ;Yl = Yl + 1 
SEC 9543: 38 387 SEC 
SBC YD 9544: A5 EF 388 LDA YD 
STA ;ETERM = 2 * YD — XD 9546: E5 CF 389 SBC XD 
LDX YD 9548: 8D AB 95 399 STA TMP 
INX ;Schleifenzähler initialisieren 954B: A9 ØØ 391 LDA +Ø 
DEX 954D: E9 ØØ 392 SBC #Ø 
BEQ READY2 ;Linie fertig? 954F: 8D AC 95 393 STA TMP+1 
JSR EXPLOT 9552: ØE AB 95 394 ASL TMP 
LDA ETERM 9555: 2E AC 95 395 ROL TMP+1 
BMI NOCOR2 ; ETERM >= Ø 9558: 18 396 CLC 





gE 


S8/8 19499d 


00 
14 
E3 


CE 
CF 


81 
ØA 
82 
ØC 
Øl 
FF 


02 


95 


437 
438 
439 
440 
441 
442 
443 
444 
445 
446 
447 
448 
449 
450 
451 
452 
453 
454 
455 
456 
457 
458 
459 
460 


FF 95 461 


READY1 
+ 
MIYS 


* * H * * 


GETADR 


CLC 
ADC 
STA 
LDA 
ADC 
STA 
CLC 
LDA 
ADC 
STA 
JMP 
JMP 


LDA 
STA 
LDA 
EOR 
CLC 
ADC 
STA 
RTS 


LDA 
STA 
LDA 
EOR 
CLC 
ADC 
STA 
RTS 
HEX 
HEX 
HEX 
HEX 


LDA 
STA 
JSR 


STA 
STY 


LDA 
BMI 
LDA 
BMI 
LDA 
STA 
RTS 


LDA 
STA 


ETERM + 2 * (YD — XD) 


ETERM 
ETERM 
ETERM+1 
+Ø 
ETERM+1 ETERM + 2 * DY 
XS 

X1 

X1 

LOOP 

EXPLOT 


#$FF 

YS 

YD 
4%11111111 


+l 
YD ; ABS (YD) 


+$FF 

xs 

XD 
#711111111 


+1 

XD :XD = ABS (XD) 

00 ;Error-Term für DDA 
00 


00 :Hilfsspeicher für 16-Bit-Mult. 


ØØ 


Adresse für Variable, die den Farbcode 
erhalten wird, feststellen und 
Variablentyp (Real, Integer) bestimmen 


+Ø 

SUBFLG ; Subscript auf Ø 

PTRGET :Adr. der Variablen 
‚feststellen 

POINTER 

POINTER+1 


VARNAM ‚ergibt Variablentyp 
INTAl 

VARNAM+1 

TYPERR ‚es war ein String! 
+1 

TYPFLG ;Real-Variable 


+2 ;Integer-Variable 
TYPFLG 









RTS 







x 
95CC: AD 54 CØ 464 TYPERR 
95CF: 4C C9 DE 465 


LDA PAGE1 
JMP SNERR 


466 * 
467 * Wertzuweisung der BASIC-Variable mit Farbcode 
468 »* im A-Register 
469 * 
95D2: 48 470 GIVBACK PHA :Farbwert retten 
95D3: AD FF 95 471 LDA TYPFLG 


95D6: C9 Øl 472 CMP +l 


95D8: BEQ REAL1 ;Real-Var. 











95DA: 68 475 PLA 

95DB: AØ 01 476 LDY #1 

95DD: 91 CE 477 STA (POINTER),Y ;High-Byte 
95DF: A9 PP 478 LDA #Ø | 
95El: 88 479 DEY 

95E2: 91 CE 48Ø STA (POINTER),Y ;Low-Byte 
95E4: 6Ø 481 RTS 















95E5: 68 483 REAL1 PLA 
95E6: A8 484 TAY 
95E7: 2Ø Øl Eš 485 JSR SNGFLT ; YREG -> Float — FAC 
95EA: AØ Ou 486 LDY #9 
95EC: B9 9D ØØ 487 REAL2 LDA FAC,Y ;FAC -> Var. 
95EF: 91 CE 488 STA (POINTER),Y 
95F1: C8 489 INY 
95F2: CØ Op 490 CPY #5 
95F4: DØ F6 491 BNE REAL2 
95F6: A5 9E 492 LDA FAC+1 
95F8: AØ 01 493 LDY +1 
95FA: 29 7F 494 AND #7Ø1111111 ;SIGN auf + 
95FC: 91 CE 495 STA (POINTER),Y 
95FE: 60 496 RTS 
497 * 
95FF: ØØ 498 TYPFLG HEX ØØ 








742 Bytes 


DOUBLE.LORES.DEMO 


1Ø PRINT CHR$ (21): PRINT CHR$ (4) "BRUN DOUBLE. LORES" 
15 REM DOUBLE.LORES.DEMO zeichnet eine Kugel 

2Ø TEXT : GOSUB 85 

25 XE = 79:YE = 47:A = XE / 2:B = YE / 2:F1 = 7:F2 = 23 
3Ø FOR C = 1 TO 15: COLOR= C:R = C + C 

35 FOR X = A — R TO A + R: IF X < Ø OR X > XE GOTO 60 
40 H = R * R — (X — A) * (X - A): IF H < = GOTO 60 
45 Yl = B + SQR (H) - F1:Y2 = B — SQR (H) + Fl 

50 IF Y1 > Ø AND Y1 < = YE THEN & PLOT X,Y1 

55 IF Y2 > Ø AND Y2 < = YE THEN & PLOT X,Y2 

60 NEXT X 

65 NEXT C 

7Ø GET X$ 

75 & TEXT : HOME : END 

8Ø REM Umschaltung auf Full-Screen 

85 & GR : POKE 49234,Ø 

86 POKE 49236,Ø: CALL 63538 

87 POKE 49237,ø: CALL 63538 

9Ø RETURN 






















Betriebssystem CP/M 
Vom Monitorprogramm zum 
Mehrbenutzersystem. 

Von Jürgen Plate. 

1984, 351 Seiten, 30 Abb., 

3 Tab., geb., DM 56,- 





Das Buch beschreibt ausführ- 
lich die Kommandos, ihre 
genaue Syntax und die einzel- 
nen Teilprogramme von CP/M 
wie BIOS (systemspezifischer 
Teil), ED (Editor), ASM (Asem- 
bler, inklusive einer Beschrei- 
bung des 8080-Befehlssat- 
zes), SYSGEN und STAT. 

Der Beschreibung von CP/M 
ist das Listing eines komfor- 
tablen Monitorprogramms für 
Z-80-Computer vorangestellt, 
das eine elementare Program- 
mierung auf Maschinenebene 
erlaubt, solange man CP/M 
noch nicht geladen hat. Das 
kann z. B. zur Fehlersuche 
sehr nützlich sein. Am Schluß 
des Buches findet sich auch 
eine Kurzbeschreibung der 
Multitasking-/Multiuser- 
Betriebssysteme. 


Das Buch zum Apple Il 
von Erich Esders 

1985, 210 S., 119 Abb., geb, 
DM 54,— 


Froris 
Gomputer- Praxis 


Das Buch zum Apple-ll 


Wenn hier vom Apple II 
gesprochen wird, so gilt das 
auch für den Ilplus, den lleuro- 
plus und die lle-Versionen 
sowie für den ganzen ,Apple- 
Nachbau“. Das Buch ist ein 
Wegweiser durch diesen 
Rechner, um mit ihm schneller 
und effektiver zu arbeiten. Es 
geht hier weniger um das ele- 
mentare Programmieren des 


Peeker 8/85 





Rechners, sondern um 
Assemblerprogramme, die 
extensiv Monitor-ROM- 
Subroutinen benutzen. Diese 
hat der Autor nach Sach- 
gebieten geordnet, z. B. 
Mathematik, Graphik, String- 
Bearbeitung + Disassembler- 
Listings und diese wiederum 
mit Erklärungen und Applika- 
tionen komplettiert. Eine aus- 
reichende Dokumentation ist 
dabei immer gewährleistet. Sie 
geht schrittweise vor, von der 
Aufgabenstellung über die 
Programmentwicklung bis zum 
lauffähigen Maschinenpro- 
gramm. Die angebotenen Bei- 
spiele sind ausbaufähig und 
lassen der eigenen Kreativität 
reichlichen Spielraum. Viele 
neuartige Tips und Tricks wird 
auch der beschlagene Apple- 
Benutzer begrüßen. 

Aus dem Inhalt: 

Der Mikroprozessor des 
APPLE Il. Der APPLE Il und 
seine Speicheraufteilung. 
APPLESOFT und seine 
Arbeitsspeicher-Bereiche. Der 
MICROSOFT-Basic-Inter- 
preter: Die Zeichen-Lese- 
Routine. Interpretierer und 
Lokalisierer. Handler-Routi- 
nen. BASIC/Maschinen- 
sprache-Interfaces. 
DISAS-Generator. Unterpro- 
gramme im APPLESOFT- 
Basic-Interpreter: Softschalter 
und -Flags. Ausdrucks-Inter- 
pretierer. Low-Resolution- 
Graphik. Fehler-Behandlung. 
Applikationen: Arithmetik- 
Demonstration „FP-CALC“. 
Hex-Dumps der Applikationen. 
BASIC-Monitor BASMON/D: 
Vorstellung der neuen Kom- 
mandos. Das Programm 
„BASMON/D“. Implementie- 
rung und Laufbeispiele. 
BASIC-Interpreter-Vergleich 
APPLE II - Commodore 64: 
Arithmetik-Demonstration 
„FP-CALC/64“. Listen: Die 
Token des APPLESOFT-Basic. 


Apple II ROM Listing 
von Matthias Buck 
1984, 116 S., Kart., DM 59,- 


«apple II 


H, He, He, He 





Lis tin g 
| | tür Appleroft - BASIC - 

Interpreter 
von Matthias Buck 






x MIKROCOMPUTER 


Das deutsche Apple-II-ROM- 
Listing ist da! 

Einleitung zum prinzipiellen 
Ablauf des Applesoftinter- 
preters: 

@ Aufbau und Verarbeitung 


der/des Programmtextes — 
Variablentabelle — String- 


space - FlieBkommaformate 


— Basicstacks (GDSUB, 
FOR-NEXT, ...) 

@ Beschreibung der wichtig- 
sten Unterprogramme, z. B. 
Variablensuche, Garbage 
collection, Ausdrucksaus- 
wertung, CHRGET, ... 

€ Vollständig disassemblierte 
und sehr ausführlich 
deutsch kommentierte Auf- 
listung des Applesoft- 
BASIC-Interpreters 

@ Übersichtliche Auflistung 
aller vom Interpreter benutz- 
ten RAM-Zeilen mit allen 
Verwendungszwecken 

@ Über 150 ausführlich doku- 
mentierte Unterprogramme: 
— Funktion 
- Ein/Ausgabeparameter 

Auch für Apple Je und c und 

Kompatible! 


Apple Il Pascal 
Eine praktische Anleitung 


von Arthur Luehrmann und 
Herbert Peckham 
1982, 544 S., kart., DM 59,- 


APRE = 
PASCA ` 





Dieses Buch ist unentbehrlich 
für alle, die die Programmier- 
sprache PASCAL lernen 
wollen und Zugang zu einem 
Apple Computer haben. 

Sie benötigen keinerlei Vor- 
kenntnisse, sondern lernen an 
Hand von Beispielen und 
Übungen, wie man selbst 
PASCAL-Programme entwik- 
kelt und sie austestet und 
werden allmählich von Kapitel 
zu Kapitel vertrauter im 
Umgang mit dem Apple 
Computer. 


Start mit Apple-Logo 
für II, lle und lic 

Das kleine Logo-Einmaleins: 
Grafik = Text * Musik 

Von D. Senftleben 

1985, 222 Seiten, DM 35,- 


Viele Mikrocomputer-Her- 
steller bieten får ihre Geråte 
neben BASIC und anderen 
Programmiersprachen 
zunehmend auch Logo an. 
Durch ihre Benutzerfreund- 
lichkeit hat diese Sprache 
bereits viele Freunde im 


Ausbildungs- und Freizeitbe- 






"Dietrich Senitleben. 
Start mit 





reich gefunden. Dabei ist 
Logo eine måchtige 
Sprache, die auch dem 
anspruchsvollen Anwender 
kaum Wünsche offenläßt. 
Mittels Schildkrötengrafik 
wird das kleine Logo-Einmal- 
eins in 12 Lektionen entwik- 
kelt. Große Bildschirmfotos 
begleiten den Leser durch 
die Lektionen. Das Buch ver- 
langt aktive Mitarbeit. Es hat 
seinen Platz neben dem 
Computer und gibt Hilfen 
und Anregungen für eigenes 
Forschen. Dank des bau- 
steinorientierten Konzepts 
kann jeder seine eigenen 
Teilbausteine erzeugen und 
sie zu neuen Blöcken 
zusammenfügen. Neben 
dem Einmaleins werden 
neue Einsatzbereiche für 
den Einsteiger erschlossen. 
Musik und Sound fehlen 
nicht. 

In diesem Buch werden die 
beiden offiziellen Logo-Pro- 
dukte der Firma Apple für die 
Rechnerfamilie Apple Il, Ile 
und llc behandelt und deren 
Unterschiede verdeutlicht. 
Weiterhin sind sämtliche 
Apple-Logo-Vokabeln über- 
sichtlich zusammengestellt. 
Dieses Buch ist ideal zum 
problemlosen und vergnüg- 
lichen Start in die Apple- 
Logo-Welt. 


Apple Il 
Anwenderhandbuch 


von Lon Poole 
1982, 450 S., zahlr. Abb., 
kart., DM 56,- 








Auch für diesen Computer 
haben wir den richtigen Leit- 
faden. Er erspart Ihnen zeit- 
raubendes und nutzloses 
Suchen nach der wirklich 
verwendbaren Dokumenta- 
tion für Ihren Computer. Das 
Anwenderhandbuch 
beschreibt zum einen den 
beliebten Apple II-Computer 
als solchen und gibt zum 
anderen ausführlich Aus- 
kunft über die normalen 
Peripheriebausteine und 
Zubehör einschließlich Disk- 
Laufwerken und Drucker. Mit 
Hilfe dieses Buches werden 
Sie Ihren Apple Il erfolgreich 
einsetzen, denn der Informa- 
tionsgehalt geht weit über 
das hinaus, was hersteller- 
seitig an Literatur angeboten 
wird. Sie lernen BASIC auf 
zwei verschiedene Arten zu 
verwenden. Wie man den 
Gebrauch von Klang, Farbe 
und Grafik zum Optimum 
führt. Sie erhalten Tips für 
fortgeschrittene Programm- 
erstellung. Sie erfahren die 
Verwendung des Maschi- 
nensprachen-Monitors 
u.v.m. Mit dem Apple ll- 
Anwenderhandbuch werden 
Ihnen alle Möglichkeiten 
eröffnet, die in diesem Com- 
puter stecken. 


Apple Il Pascal 


1985, 197 S., DM 39,- 


Kosa. š 





ui 


Apple II Pascal 
Betriebssystem 


1985, 256 S., DM 49,- 


AMEI 


D: C A! 


k DA ` 
f $ ` k. RR: A? i 
kh B ` An 


Betriebssystem 





39 





von Ing. (grad.) Ernst Fischer 


Ein gutes Adreñverwaltungsprogramm 
(kunftig Adv genannt) sollte mindestens 
folgende Anforderungen erfüllen: 

Das Programm soll anwenderfreundlich 
sein; es kommt also nur eine Menütech- 
nik in Frage. Personaldaten müssen leicht 
veränderbar sein; es sollte eine Such- 
funktion nach Vorname, Familienname 
und nach Bemerkungen existieren. Vor- 
teil: Man findet auch Personen wieder, 
deren Namen sich durch Heirat verändert 
haben. Die Suchfunktion nach Bemerkun- 
gen sollte es ermöglichen, auch Teilstrings 
innerhalb der Bemerkung zu finden. Von 
einem Adv-Programm erwartet man nicht 
nur, daß es für die gespeicherten Adres- 
sen Adreßaufkleber und Absender 
druckt, sondern auch ein Adreßverzeich- 
nis im Taschenkalenderformat ausgibt. 
Schließlich müssen Datensätze leicht, 
aber nicht versehentlich gelöscht werden 
können. Ein gutes Adv sollte nur über ein 
Passwort benutzbar sein, um es vor 
nichtautorisierten Personen zu schützen. 
Es interessiert den Benutzer auch, wievie- 
le Datensätze gespeichert sind und wann 
der letzte Zugriff war. Diese Informationen 
sollten bei Beginn vom Adv ausgegeben 
werden. All diese Forderungen werden 
von diesem Programm erfüllt. 

Als Grundlage dient die relationale 
Datenbank dBASE. Einer der wesentlich- 
sten Vorteile von dBASE ist die Flexibilität, 
bedingt durch eine eigene Programmier- 
sprache. Mit ihr läßt sich praktisch jedes 
Problem lösen, wie im folgenden noch ge- 
zeigt wird. Für eine sinnvolle Anwendung 


40 


Adreßverwaltu 





programm 


mit dBASE II 


ist folgende Gerätekonfiguration erforder- 
lich: Ein Apple Il/II+/lle oder kompatible 
Nachbauten, zwei Diskettenlaufwerke, ein 
Drucker und eine Z80-Karte (läuft unter 
CP/M). Natürlich muß man im Besitz der 
relationalen Datenbank dBASE sein. Lei- 
der können Besitzer eines Apple llc die 
Vorteile dieses Programms wegen der 
fehlenden Slots nur mit einer teuren Zu- 
satzkarte nutzen. Die Druckersteuerzei- 
chen in den Unterprogrammen beziehen 
sich auf Epson-Drucker. 

Wichtig bei der Anwendung: Zu beachten 
ist bei der Benutzung des Adv lediglich, 
daß man das Programm nur über die Op- 
tion 9 des Hauptmenüs verläßt. Nur so ist 
gewährleistet, daß die benutzten Dateien 
wieder geschlossen werden. Hält man 
sich nicht an diese Selbstverständlichkeit, 
kann dies zu Datenverlusten führen. 


Aufbau des Adreßverwaltungspro- 
gramms 


Wie Bild 1 zeigt, wird der Benutzer über 
den aktuellen Zustand des Adv informiert. 
Es zeigt an, wieviele Adressen gespeichert 
sind und an welchem Datum das Adv zum 
letzen Mal benutzt wurde. Schließlich wird 
der Benutzer aufgefordert, das aktuelle 
Tagesdatum einzugeben. Bei einem Re- 
turn wird das alte Datum übernommen. 
Nachdem diese Hürde genommen ist, 
wird der Benutzer aufgefordert, seine Zu- 
griffsberechtigung durch ein Passwort 
nachzuweisen. Das Passwort wird dabei 
aus Sicherheitsgründen nicht am Bild- 
































dis, — 


Peeker 8/85 








a a 
d RTN ` 
A AR. 
d Ex N br 

Nee Å í D 


à < 


Ki Tei 
va 
, úM 
14 JE 
> 


| 





Peeker 8/85 


schirm angezeigt. Bei richtiger Eingabe er- 
schließt sich nun erst das Hauptmenü; 
man kann über die gespeicherten Daten 
verfügen. 


Auflistung und Funktion 
der einzelnen Programme 
(vgl. Bild 2) 


Die Programme in Laufwerk A: haben die 
Aufgabe, menügesteuet auf die 
Datenbank zugreifen zu können. Außer- 
dem befinden sich auf A: die Ein- und 
Ausgabemaske, welche für die Datenein- 
gabe, Datenausgabe und Datenverände- 
rung genutzt werden. Die drei Indexdatei- 
en gestatten einen sehr schnellen Zugriff 
auf die Daten (maximal 2 Sekunden unab- 
hängig von der Datengröße). Mit ihnen 
kann man das indizierte Feld alphabetisch 
ausgeben. Indizierung hat gegenüber Sor- 
tierung den Vorteil, daß die Daten phy- 
sisch nicht verändert werden und auch 
weniger Zeit und Speicherplatz bean- 
sprucht wird. Das Indexregister wird auf 
Laufwerk A: angelegt, weil hier noch Spei- 
cherplatz auf der Diskette zur Verfügung 
steht, der bei großen Datenmengen bei 
Laufwerk B: fehlen würde. In der Memory- 
datei werden schließlich die aktuellen 
Daten des Adv wie die Anzahl der gespei- 
cherten Records und das letzte Zugriffsda- 
tum abgelegt. In Laufwerk B: befindet sich 
ausschließlich die Adv Datenbank, deren 
Struktur später erklärt wird. 


Aufbau der Datenbank 


Das Adv sollte so universell wie möglich 
sein und dabei alle Informationen liefern, 
die beruflich und auch privat interessant 
sind. Sollten für das Adv bestimmte Daten, 
wie Geburtsdatum oder Vorname der Ehe- 
frau zu intim sein, weil man die Person 
nicht so genau kennt, so läßt man einfach 
dieses Feld frei. Die Datenspeicherung er- 
folgt ausschließlich auf dem Laufwerk B:. 
Somit ist genügend Platz auf der Diskette. 
Alle Kommandodateien, Indexregister und 
der Memoryspeicher sind auf Laufwerk A:. 
Für die Felder FAM, VOR und VORE ist 
jeweils ein Indexregister angelegt; das 
spart Zeit beim Suchen und gestattet auf 
einfache Weise das alphabetische 
Ordnen. 

Die Datenbank wird folgendermaßen an- 
gelegt: Man startet dBASE im Laufwerk A: 
mit der Eingabe von „dbase“ <RETURN> 
(das CP/M Betriebssystem muß natürlich 
auf der dBASE-Diskette sein). Nach der 
Eingabe des Tagesdatums oder einem Re- 
turn meldet sich dBASE mit einem Punkt 


41 





als Promptzeichen. Für die Generierung 
des Adv geben Sie den dBASE-Befehl 
CREATE B:ADRESSEN ein. Daraufhin er- 
fragt sich dBASE die Struktur der 
Datensätze. Nachdem Sie das 17. Feld 
eingegeben haben, schließen Sie mit RE- 
TURN ab. Auf die Frage, ob Sie die Daten 
jetzt sofort eingeben wollen (INPUT DATA 
NOW?) antworten Sie mit „N“ (No). Damit 
liegt die Struktur des Adv in Laufwerk B: 
fest. Vergleiche hierzu Bild 3. 


Eingabe der Kommandodateien 


Die Eingabe sollte nicht mit dem dBASE- 
Editor mit Hilfe des MODIFY-COMMAND- 
Befehls eingegeben werden. Es hat sich 
gezeigt, daß ab einer bestimmten Länge 
der Programme der Editor verrückt spielt. 
Statt dessen sollte die Programmeingabe 
mit WordStar erfolgen. Außerdem hat man 
dabei mehr Komfort. 

(Anm. der Red.: Wegen des großen Um- 
fangs der Kommandodateien sind alle er- 
forderlichen CMD-Files mit Ausnahme ei- 
nes Beispiels {Bild 5} nur auf der Peeker- 
Sammeldiskette enthalten. Da diese Dis- 
kette im DOS-Format beschrieben ist, 
transferieren Sie die Files mit dem Pro- 
gramm APDOS der CP/M-Systemdiskette 
von DOS nach CP/M. Danach liest dBASE 
diese Files einwandfrei.) 


Beschreibung der Programmteile 


START.CMD (Programmbeschreibung) 
Das Programm gibt Informationen über die 
Datenbank (letztes Zugriffsdatum, Anzahl 
der Records usw.). Diese bezieht es zum 
Teil aus dem Memoryspeicher von dBASE. 
Die Datumseingabe wird auf gültige Werte 
überprüft; erst dann kann im Programm 
fortgefahren werden. Es erfolgt eine Über- 
prüfung des eingegebenen Passwortes. 
Wünschen Sie ein anderes Passwort, so 
ersetzen Sie „PEEKER“ durch das Wort 
Ihrer Wahl. Wird später beim Gebrauch ein 
falsches Passwort eingegeben, so löscht 
dBASE alle bis dahin gemachten Eingaben 
vom nichtautorisierten Benutzer und kehrt 
zum CP/M-Betriebssystem zurück. 
Stimmt das eingegebene Passwort mit 
dem gespeicherten überein, wird das 
Hauptmenü aufgerufen. 


HMENUE.CMD (Programmbeschreibung) 
Das Hauptmenü gestattet den Zugriff auf 
die einzelnen Unterprogramme. Wird Op- 
tion 9 (Ende) gewählt, so werden zuerst 
alle Speichervariablen mit „RELEASE 
ALL“ gelöscht. Dann wird die Datenbank 
mit „USE B:ADRESSEN“ eröffnet und der 


42 


Zeiger auf den letzten Record gesetzt. Die 
Nummer dieses Records wird im Varia- 
blenspeicher „R:NR“ in den Memoryspei- 
cher geladen. Danach wird mit „CLEAR“ 
die Datenbank geschlossen. „CANCEL“ 
verläßt das Hauptmenü und das dBASE- 


Promptzeichen erscheint. Ersetzt man 
„CANCEL“ mit „QUIT“, so kehrt man 
zum CP/M-Betriebssystem zurück. 


AUFNAHME.CMD 
bung) 

Zuerst wird die Adv-Datenbank mit „USE 
B:ADRESSEN“ eröffnet und der Zeiger an 
das Datenende gesetzt. Mit „APPEND 
BLANK“ wird ein leerer Datensatz ange- 
hängt, der dann durch den Aufruf der Auf- 
nahmemaske gefüllt wird. Die WHILE- 
Schleife wird solange durchlaufen, bis 
man die Frage „Weitere Eintragungen?“ 
mit „N“ beantwortet. Hat man die Eingabe 
durch „N“ abgebrochen, so werden drei 
Indexdateien angelegt; eine für den Fami- 
liennamen, eine für den Vornamen der 
Eingabeperson und eine für den Vorna- 
men von Ehefrau/Ehemann. Mit „CLEAR“ 
wird die Datenbank geschlossen. 


(Programmbeschrei- 


AUFMASKE.CMD 
bung) 

Die Aufnahmemaske dient zur einfachen 
und übersichtlichen Eingabe der Personal- 
daten. Dieser Programmbaustein wird 
auch bei Veränderung der Personaldaten 
genutzt. Das Programm erzeugt den Bild- 
schirmausdruck von Bild 4. 


(Programmbeschrei- 


AUSGABE.CMD 
bung) 

Die Ausgabemaske (AM) ist im Prinzip 
genauso wie die Eingabemaske (EM) auf- 
gebaut. Der Unterschied ist folgender: Bei 
der EM mußten ja die Daten in die Spei- 
chervariablen eingelesen werden; deshalb 
die ,GET"-Befehle. Bei der AM werden 
die Speichervariablen aber auf den Bild- 
schirm gegeben. Hier also keine „GET“- 
Anweisung, sondern „SAY“-Anweisun- 
gen. Der Cursor bleibt sofort auf der letz- 
ten Zeile (hinter J/N) stehen; man braucht 
sich nicht mit Return bis zur letzten Zeile 
vorarbeiten. 


(Programmbeschrei- 


SUCH.CMD (Suchprogramm) 

Das Suchprogramm sucht, wie sein Name 
es vermuten läßt, nach einem bestimmten 
Datensatz, wenn der Familienname oder 
ein Teil davon bekannt ist. Die WHILE- 
Schleife wird solange durchlaufen, wie der 
vorhandene Datensatz 0 und somit noch 
nicht gefunden ist. Ist der Zeiger am Ende 
der Datei, erscheint die Meldung, daß es 
diese Person nicht gibt. Man hat die Mög- 


lichkeit, mit Return die Suche abzubre- 
chen oder, nachdem man den Namen der 
gesuchten Person neu eingegeben hat, 
einen neuen Suchvorgang zu starten. 
SUCH.CMD wird in folgenden Komman- 
dodateien verwendet: 

- EDITFNAM.CMD 

- SUCHFNAM.CMD 

- SCHREIBA.CMD 

- LOESCH CMD 


EDITFNAME.CMD 
bung) 

Dieses Programm erlaubt Änderungen 
von Datensätzen. Nach der Eingabe des 
Familiennamens (optional auch zusätzlich 
des Vornamens) sucht dBASE in der In- 
dexdatei den gewünschten Namen. Ver- 
läuft die Suche negativ, erscheint eine ent- 
sprechende Meldung. Der Benutzer hat 
die Möglichkeit, beliebig oft die Namens- 
eingabe zu wiederholen oder durch ein 
Return zum Hauptmenü zurückzukehren. 
Wurde auch der Vorname eingegeben, so 
erfolgt nun mit „LOCATE“ die Suche nach 
dem Datensatz, der beide Kriterien erfüllt 
(Vor- und Familienname). Die „FIND“-An- 
weisung dient dabei zum schnellen Finden 
des Familiennamens. Da davon auszuge- 
hen ist, daß verschiedene Personen den 
gleichen Familiennamen haben, ist es 
zweckmäßig, auch den Vornamen einzu- 
geben. Mit dem LOCATE-Befehl wird 
dann die Person sicher gefunden. Die Auf- 
nahmemaske erlaubt dabei eine bequeme 
Veränderung der Daten. 


(Programmbeschrei- 


SUCHFNAM.CMD 
bung) 

Will man sich die Daten einer Person kom- 
plett am Bildschirm anschauen, so ruft 
man dieses Kommandoprogramm auf. 
Nachdem Sie den Familiennamen der ge- 
wünschten Person eingegeben haben, 
sucht das Unterprogramm SUCH.CMD 
den Datensatz. Wird er nicht gefunden, 
können sie mit Return abbrechen oder 
einen erneuten Suchvorgang einleiten. 
Die Daten werden mit der Ausgabemaske 
am Bildschirm angezeigt. Beantworten Sie 
die Frage „Ist dies die gewünschte Person 
(J/N)" mit N(ein), so wird mit LOCATE die 
nächste Person gesucht, auf welche das 
Suchkriterium zutrifft. Dieses Spiel geht so 
lange, bis die Person gefunden ist oder 
der Datenzeiger am Dateiende angelangt 
ist. 


(Programmbeschrei- 


SUCHVNAME.CMD (Programmbeschrei- 
bung) 

Manchmal weiß man von einer Person nur 
den Vornamen, weil der Familienname 


Peeker 8/85 





sich durch eine Herat geåndert hat. Das 
Programm ist åhnlich aufgebaut wie 
SUCHFNAME.CMD. Wird der Vorname 
nicht in der Indexdatei Beta gefunden, so 
wird in der Indexdatei Gamma weiterge- 
sucht. Hier sind die Vornamen der Ehe- 
partner indiziert. Verlàuft die Suche auch 
hier ergebnislos, so erfolgt die Meldung 
„Den Vornamen XXX gibt es nicht!". Mit 
Return kann man die Suche abbrechen 
oder durch eine erneute Eingabe den 
Suchvorgang wiederholen. Ist die ange- 
zeigte Person nicht die richtige, so werden 
mit LOCATE nacheinander alle Personen 
mit dem entsprechenden Vornamen aus- 
gegeben, bis der EOF-Marker erreicht ist. 


SUCHBEME.CMD (Programmbeschrei- 
bung) 

Oft kommt es vor, daB man von einer 
Person sowohl Familien- als auch Vorna- 
men vergessen hat. Dann helfen bezüg- 
lich der Person gemachte Bemerkungen 
weiter. Das Programm findet auch Teil- 
strings aus der Bemerkung. Ein Beispiel: 
Man hat als Bemerkung „Mitglied beim 
Computerarbeitskreis“ eingegeben. Als 
Teilstring genügt „arbeitskreis“. Es wer- 
den alle Personen nacheinander ange- 
zeigt, die bei Bemerkungen den Teilstring 
„arbeitskreis“ haben. Wird der Teilstring 
nicht gefunden, so kann man wieder mit 
Return die Suche abbrechen oder ein neu- 
es Suchkriterium eingeben. 


SCHREIBA.CMD (Programmbeschrei- 
bung) 

Zu einer Adreßverwaltung gehört auch ein 
Programm, das Adressen- und Absender- 
aufkleber drucken kann. Die gewünschte 
Person wird mit dem schon bekannten 
Suchprogramm SUCH.CMD gefunden. 
Wie man aus dem Anredemenü sieht, hat 
man alle erdenklichen Optionen. Wählt 
man Option-Nr.1, so kann man für sich 
Absenderaufkleber drucken lassen. Op- 
tion-Nr.7 gestattet individuelle Anreden 
wie Firma o.ä. Hat man sich für eine der 
sieben Möglichkeiten entschieden, so er- 
scheint die Adresse richtig formatiert auf 
dem Bildschirm. Hat man sich zum Aus- 
druck entschieden, wird man nach der An- 
zahl der zu druckenden Exemplare gefragt 
und gebeten, den Drucker einzuschalten. 
Nach dem Justieren der Aufkleber kann 
nach einem Return der Druck beginnen. 
Die Druckersteuerzeichen sind für den 
Epson FX-80 gedacht. 


SCHREIBL.CMD 
bung) 

Eine Adreßverwaltung taugt nur etwas, 
wenn man die gespeicherten Adressen 


(Programmbeschrei- 


Peeker 8/85 















Bild 1: Aufbau des Adreßverwaltungsprogramms 


Memorydatei 


Aufnahmemaske 
Ausgabemaske 


Programminformation 







Abfrage des Passwortes 






Indexdateien 


Schneller Zugriff auf die 
Felder der Datenbank 


| Laufwerk A: | Laufwerk B: | 





Autor, letztes Zugriffsdatum, 
Anzahl der Eintragungen, 
Aktuelles Tagesdatum 


Überprüfung des Benutzers 


Hauptmenü 





.Eingeben der Personaldaten 
.Verändern der Personaldaten 
.Suchen nach Familiennamen 
.Suchen nach Vornamen 
‚Suchen nach Bemerkungen 
‚Adreßaufkleber drucken 
.AdreBlisten drucken/ 
Adressen anschauen 
.Löschen eines Datensatzes 
. Ende 












Datenbank 


A O Q Ë GQ ON H 





o 





Bild 2: Auflistung der Unterprogramme des Adv in Laufwerk A: 


Programmname 
AD-START.CMD —> 
HMENUE . CMD —> 
AUFNAHME CND --> 
AUFMASKE CMD --> 
AUSMASKE CND --> 
EDITFNAME. CMD --> 
SUCHFNAME . CMD ——> 
SUCHVNAME . CMD —-> 
SUCHBEME CND --> 
SCHREIBA.CMD --> 


SCHREIBL.CMD --> 


LOESCH. CMD —> 
SUCH. CMD ——> 


Funktion des Programmes 


Startprogramm, informiert über das Programm, 
Recordanzahl, letztes Zugriffsdatum usw. 
Erlaubt den Zugriff auf die einzelnen Unter- 
programme. 

Dient zur Dateneingabe; es wird eine Eingabe- 
maske benutzt. 

Maske zur Dateneingabe und Datenverånderung. 
Maske zur Datenausgabe. 

Erlaubt die Veränderung der Personaldaten; es 
wird die Maske zur Dateneingabe benutzt. 
Erlaubt die Suche nach einer bestimmten Person; 
Als Suchkriterium dient der Familienname. 
Erlaubt die Suche nach einer bestimmten Person; 
Als Suchkriterium dient der Vorname. 

Erlaubt die Suche nach einer Bemerkung oder 
einem Teil in der Bemerkung. 

Schreibt Adressenaufkleber 

Schreibt Adressenlisten im Taschenkalender- 
format und listet auf dem Bildschirm die 
Records auf. 

Löscht die Personaldaten einer Person. 

Sucht nach gewünschten Datensätzen 


Bild 3: Struktur der Datenbank 


Feld Name Bezeichnung Type Feldbreite 
L FAM Familienname C 15 
2 VOR Vorname C 14 
3 PLZ Postleitzahl C 4 
4 ORT Wohnort C 15 
5 STR Straße C 25 
6 GEBD Geburtsdatum C 8 
7 BEM Bemerkung C 5Ø 
8 TNRP Privattelefonnr. C 6 
9 VWP Vorwahl Privat C 6 

10 VWAL Auslandsvorwahl C 6 


43 





immer verfügbar hat in Form einer Hartko- 
pie. Verfugbar heiBt, immer und Uberall 
greifbar. Dieser Forderung kommt das 
Programm in besonderer Weise nach. Der 
Ausdruck erfolgt nämlich im Taschenka- 
lenderformat; auf einer Größe von 8 cm x 
14,5 cm bekommt man einen Ausdruck, 
den man in gebundener Form in jeden 
handelsüblichen Taschenkalender ein- 
schieben kann. Zu diesem Zweck schnei- 
det man sich einzelne Blätter von der Grö- 
Be 16 cm x 14,5 cm, die man in der Mitte 
faltet und beidseitig bedrucken läßt. Die 
Papierende-Erkennung des Druckers wird 
automatisch abgeschaltet. Vor dem Blatt- 
ende wird man aufgefordert, ein neues 
Blatt einzuspannen. Es erfolgt dabei eine 
automatische Zeilenberechnung, so daß 
eine Adresse immer auf einem Blatt endet 
und nicht ein Teil auf die nächste Seite 
übernommen werden muß. Die Datenaus- 
gabe wird so formatiert, daß nicht vorhan- 
dene Personalien auch nicht ausgegeben 
werden. Beispiel: Es ist keine Bemerkung 
abgespeichert; also wird diese Zeile auf- 
gerückt und die Abkürzung „Bemerk.:“ 
erscheint nicht. Oder: Der Vorname ist 
nicht bekannt; der Familienname wird 
linksbundig geschrieben. 


Neben einer Hartkopie gibt dieses Pro- 
gramm auch eine geordnete Übersicht der 
gespeicherten Daten am Bildschirm aus. 
Die Formatierung erfolgt in der gleichen 
Weise wie beim Drucken. 


LOESCH.CMD (Programmbeschreibung) 
Ab und zu muß man seine Adreßdatei 
bereinigen. Man möchte bestimmte Per- 
sonen aus der Datei löschen. Das Pro- 
gramm fragt nach dem Familiennamen der 
zu löschenden Person. Das Suchpro- 
gramm SUCH.CMD verfährt nach der uns 
schon bekannten Weise und zeigt uns, 
anhand der Ausgabemaske, die erste Per- 
son mit diesem Namen. Ist dies nicht die 
gewünschte Person, so wird mit LOCATE 
die nächste Person präsentiert, auf die das 
Suchkriterium zutrifft. Das Spiel geht so- 
lange, bis entweder die gesuchte Person 
gefunden ist, oder der Zeiger an der EOF- 
Marke angekommen ist. Ist die Suche po- 
sitiv verlaufen, erscheint eine deutliche 
Warnung, daß die Person mit den folgen- 
den Daten gelöscht wird. Man hat jetzt die 
letzte Möglichkeit, den Löschvorgang ab- 
zubrechen. In diesem Fall antwortet man 
auf die Frage „Ist dies die gewünschte 
Person zum Löschen (J/N)“ mit „N“. Ant- 
wortet man mit „J“, so wird einem noch 
einmal der Name der Person gezeigt, von 
der soeben alle Daten gelöscht wurden. 


44 


El VWD Vorwahl Dienst C 6 
12 TNRD Diensttelefonnr. C 8 
15 NAT Nationalität (KFZ) C 2 
14 VORE Vorname der Ehefrau C 14 
15 GEBDE Geburtsdatum Ehefrau C 8 
16 VWDE Vorwahl Dienst Ehefrau C 6 
17 TNRDE Diensttelefonnr. der C 8 
Ehefrau 


Bild 4: Maske zur Aufnahme der Adreßdaten 


Bitte geben Sie die Daten für das Adreßregister ein... 


I 
+ —— "T — n s ƏLH—-O— VT 
! Fam.Name: Vorname: Geb.Datum: 

I 

! Ehefrau.................... Vorname: Geb.Datum: 

I 

! PLZ: Wohnort: StraBe u.Nr.: 

I 

! Land (Intern.KFZ-Zeichen als Abkürz.): 

+———— 1/00. 

! Telefon Priv. Vorwahl: Rufnr.: Auslandsvorwahl: 

I 

! Telefon Die. Vorwahl: Rufnr,: 

I 

! Ehefrau... Telefon Dienstlich Vorwahl: Rufnr.: 

+———— 7 LI. 

! Bemerkung: 

+---- LI 


! Weitere Eintragungen ? (J/N): 


| 
| 
= + -— +4 — ze e — — + — e e e e .- H 


+=+ 


Bild 5: Beispiel für die erste Command-Datei (AD-START.CMD) 
(Die übrigen CMD-Files befinden sich auf der Peeker-Sammeldisk) 


* DO START.CMD (Startet das Adv) 

ERASE 

SET TALK OFF 

RESTORE FROM MEMORY 

STORE CHR (15) TO INVERSE 

STORE " " TO ZGBER 
STORE F TO OK 


S 23,0 SAY INVERSE + "ADRESSEN START "+ 


" 

6,21 SAY "ADRESSENVERWAL TUNG" 
8,21 SAY "APPLE //e Ver. 1.0 8/84" 
1Ø,21 SAY "AUTOR : ERNST FISCHER" 
15,9 SAY "Letzter Zugriff : " + DATE + 

Anzahl Records : " 

S 15,68 SAY STR(R:NR,3) 

DO WHILE .NOT. OK 


§ 
§ 
§ 
§ 


S 17,9 SAY "Bitte geben Sie das Datum ein <TT/MM/JJ> W 
GET DATE PICTURE '99/99/99' 
READ 
IF VAL($(DATE,1,2)) > 31; 
.OR. VAL($(DATE,1,2)) < 1; 
.OR. VAL($(DATE,4,2)) > 12; 
.OR. VAL($(DATE,4,2)) < 1; 
.OR. VAL($(DATE,7,2)) < 83 
? CHR (7) 
ELSE 
STORE T TO OK 
ENDIF 
ENDDO 
ERASE 
STORE $(DATE,1,2) +" "+ $(DATE, 4,2) +" " + $(DATE,7,2) TO DATUM 


SET DATE TO &DATUM 
$ 23,0 SAY INVERSE + "ADRESSEN 
8 DATUM " + DATE() 
$ 17,5 SAY "Bitte Passwort eingeben ú 
SET CONSOLE OFF 
ACCEPT ' ' TO ZGBER 
SET CONSOLE ON 
ERASE 
RELEASE OK, DATUM, DATE 
IF ZGBER < > "PEEKER" 
RELEASE ALL 
ERASE 
QUIT 
ENDIF 
DO HMENUE 
*Ende von AD-START 


START" + 


= 


Peeker 8/85 








Wordstar 


drucktinternationale 





Zeichensätze 


Frei definierte Sonderzeichen auf dem FX-80 nutzen 


von Dipl.-Ing. H. A. Rohrbacher 


Normalerweise drucken die Epson-Ma- 
trixdrucker der MX- oder FX-Serien den 
mit ihren DIP-Schaltern eingestellten 
Vorzugszeichensatz aus. In aller Regel 
ist dies der deutsche Satz mit den Um- 
lauten, dem B und dem Paragraphzei- 
chen. Dies geschieht völlig unabhän- 
gig von der Darstellung der Sonderzei- 
chen auf dem Bildschirm. 


Nun kommt es häufig vor, daß man entwe- 
der in einer fremden Sprache korrespon- 
dieren oder in deutschen Texten die ecki- 
gen oder geschweiften Klammern verwen- 
den möchte, die aber beim deutsch einge- 
stellten Drucker nicht ohne weiteres er- 
reichbar sind. Hier bietet der Drucker die 
Möglichkeit eines Software-Schalters, der 
die Umschaltung auf einen zweiten Spra- 
chensatz veranlaßt. Beim Epson-Drucker 
erfolgt die Auswahl des Zeichensatzes 
über ESC R (n), also in Applesoft durch 
PRINT CHR$(27) "R"; CHR$(n), wobei 
„n“ die Zeichensatz-Nummer ist (ASCII: n 
= 0, Französisch: n = 1, Deutsch: n = 2 
USW.). 


"A = ASCII EIN ^AN = DEUTSCH EIN 
í = å = ü A = ü 
[ = Á N = Ü = ü 
v = B @ = å B `. 
“E = R Engschrift EIN/AUS åvuBAORE = {iV [\Je 
“b -> “Ñ L > T t. exul == L. 1 
“WE 5 BR Sperrschrift 
Ð >> D doppelt gedruckt 
`B = BR fett gedruckt ööö=:ıı 
NND = "BD weit+doppelt 
T ° I tiæwfætællæn Aðü= ! > 
“IE > TR tist+eng A8üU698=(1)006 
SV N NY hochstellenm AGUC 
VY E — `> it daf H Së 2 Ser r+hochetellen 
N N NYSE nn A E m im < <= Ex 
Tabelle 2 


Peeker 8/85 


Adresse: Adr.# Ctrl-P Inhalte Bedeutung 

TRMINI: 0292 Ø4 14 48 lA 33 CTRL-Z3 -> deutsche Zeichen 
DEL3: ø2D1 Øl (ex: 19) mittellange Warteschleife AUS 
DEL4: Ø2D2 Øl (ex: 4Ø) lange Warteschleife AUS 

DELS: Ø2D3 ØØ (ex: Ø9) Ctrl-delay AUS 

PALT: Ø6B5: TA Ø3 1B 52 ØØ ESC-Sequ.-> ASCII-Zeichen EIN 
PSTD: ØGBA: IN Ø3 1B 52 02 ESC-Sequ.-> deutsche Zch. EIN 
USR1: Ø6C9: 1Q Ø3 1B 57 ØØ ESC W Ø -> Weit AUS 

USR2: @6CE: TW 93 1B 57 Øl ESC W 1 -> Weit EIN 

USR3: Ø6D3: ÎE Øl ØF SI=CHR$(15) -> Eng EIN 

USR4: Ø6D8 FR 93 12 1B 50 DC + ESC P —> Eng AUS+NORMAL 
RIBBON: Ø6DD tY 93 1B 53 00 ESC S Ø -> Hochstellen EIN 
RIBOFF: Ö6E2 1Y Ø4 1B 54 1B 48 ESC T +H -> Hochstellen AUS 
ROLUP: @BF fT 03 1B 53 Øl ESC S 1 -> Tiefstellen EIN 
ROLDOW : Ø6C4 1T Ø4 1B 54 1B 48 ESC T +H -> Tiefstellen AUS 
PSINIT: Ø6E7 07 1B 40 1B 52 Ø2 1B 4F -> dt. Drucker INIT 
PSFINI: Ø6F8 Ø9 1B 57 ØØ 12 1B 40 1B 52 Ø2 -> Drucker END 
BLDSTR: 0691 TB 03 Fettdruck mal Anschlag 
DBLSTR: 0692 TD 92 Doppeldruck 2mal Anschlag 
Tabelle 1 Patches für den mnemotechnichen WORDSTAR 3.0 mit den 


frei wählbaren deutschen oder ASCII-Sonderzeichen. 


Man kommt zum Ziel, wenn diese Um- 
schaltung mit einem Ctrl-Code ermöglicht 
wird. Hierzu bietet Wordstar die Labels 
PALT: und PSTD: an. Diese haben die 
Adressen 06B5H bzw. 06BAH und wer- 
den über TA und TN aktiviert. In der 
Praxis verfährt man wie folgt: 

Der beim Booten angebotene Sprachsatz 
ist zunächst deutsch. Soll nun im Verlauf 
des Editierens ein ASCII-Zeichen ausge- 
druckt werden, so gibt man T A (= Ctrl-P- 
Ctrl-A) und drückt dann diejenige Taste, 
die dem ASCII-Zeichen entspricht (siehe 
Tabelle 2). Danach schaltet man wieder 
mittels 1 N (= Ctrl-P-Ctrl-N) auf den deut- 
schen Satz zurück. T A ist also der (A)lter- 
native, TN der (N)ormal installierte Satz. 
Wichtig ist, daß die Drucker-Initialisierung 
deutsch erfolgt. Diese Festlegung erfolgt 
im Label PSINIT: in Adresse 06E7H (WS 
V3.0) und wird in PSFINI: mit 1B 52 02 


wiederholt. So wird dafür gesorgt, daß der 
Neuausdruck einer Datei — trotz eines ver- 
gessenen ÎN — mit keinem anderen als 
dem deutschen Zeichensatz startet. 

Die Vorgehensweise des Patchens wurde 
bereits in dem vorhergehenden Aufsatz 
erläutert. In der nachstehenden Tabelle 1 
wurden die übrigen Patches für die unter- 
schiedlichen Schriftarten (breit, eng, ge- 
sperrt, fett, doppelt, indiziert) so gewählt, 
daß die Ctrl-Codes mnemotechnische Re- 
geln befolgen. Alle wichtigen Labels sind 
aufgeführt. Zu beachten ist, daß das 1- 
Zeichen für , Ctrl-P" steht. 

Tabelle 3 nennt die Label-Inhalte für die 
neun verschiedenen Zeichensätze, die 
beispielsweise der FX-80 anbietet. Man 
kann sich so eine deutsch-französische 
oder deutsch-spanische WS-Version anle- 
gen und würde, wollte man nur in französi- 
scher Sprache schreiben, gleich zu Be- 


45 





ginn der Datei ein TA setzen Dieses 
„FLAG“ müßte nicht einmal durch TN 
zurückgesetzt werden, da bei Druckbeen- 
digung der Inhalt von PSFINI: automatisch 
wieder für deutsche Verhåltnisse sorgt. 
Die Texte der Abbildungen 1-3 zeigen 
zweisprachige Beispiele. 


Deutsch + ASCI I 


Im ASCII+DEUTSCH gepatchten WORDSTAR können die Umlaute 
ADUAGU sowie das Scharf-S BRA und diese Zeichen: 458 mit den 
US-ASEII-Sonderzeichen TISEI oder der Tilde “~~ und dem AT- 
sign @@@ beliebig gemischt werden: [àl oder Ai , 
sind möglich. 


Abbildung 1 


Frangais! 

Deutsche und französische Sonderzeichen gemischt: 
Voilà: Chague élève aura son WORDSTAR à Noel, 
travaillant en français et allemend en mëme temps. 
Das ë wird übrigens so erzeugt: e ctrl-FH mit 
anschließendem ^, da das ë nicht im FX-8Ø- 
Sprachensatz enthalten ist. Tout est tres simple! 
Es entsprechen: AGGUN Sp = °éçuse`a ` 


Abbildung 2 


i SERAORES ! 


Nun kann mein WORDSTAR auch die spanischen Sonderzeichen 

parallel zu den deutschen Umlauten ausdrucken: j "AREIY'@, 

Con el FX-BØ: ‚Toto es possible! La manipulacion del 

WORDSTAR en alemán y español es muy sencillo. å Le gusta 

a usted el WS? y: ¿has comprendo todo? ¡Olé! 

übrigens: öfters vorkommende Akzent-Buchstaben vie & werden 
so erzeugt: e und ctrl-FH Shift-7 (’) bewirken "Backspace", 
wodurch beide Zeichen übereinander gedruckt werden. 


Abbildung 3 


Sonderzeichen mit Wordstar 

Technisch wissenschaftliche Texte enthal- 
ten in der Regel viele Sonderzeichen, bei- 
spielsweise die Elemente des griechi- 
schen Alphabets oder die Buchstaben in- 
dividueller Schriften, wie inverse oder go- 
tische Zeichen. Auch sind ganze Sequen- 
zen zusammengesetzter Grafikzeichen 
denkbar, mit denen Bordüren oder beson- 
dere Hervorhebungen des Textes erzeugt 
werden. 


Derartige „Fonts“ können in den Puffer 
der Epson-Drucker der FX-Serie geladen 
werden und stehen zusätzlich zum übri- 
gen Zeichensatz zur Verfügung. Die Fonts 
bezieht man entweder aus bekannten Pro- 
grammen, oder man erstellt sie sich mit 
Hilfe eines Shape-Editors und einem Font- 
Loader nach eigener Vorstellung und Ge- 
schmack. Die letztgenannte Möglichkeit ist 
oftmals die bessere, da man nur diejeni- 
gen Sonderzeichen auswählt und auf die 
Speicherplätze des Puffers verteilt, die 
wirklich auch benötigt werden. Dabei ist es 
zweckmäßig, mnemotechnischen Regeln 
folgend, ein Alpha auf die Taste A, ein Beta 
auf B und das Omega-Zeichen auf O zu 
legen. 

Zur Übernahme eines Sonderzeichens 
aus dem Puffer erwartet der FX-80 den 
Befehl ESC % 1 0, während die Rück- 
schaltung auf den normalen Zeichensatz 
durch ESC % 0 0 bewirkt wird. 


46 


auch “N 


PALT: Ø6BS 1A Ø3 1B 52 


EIN: 
Ctrl-P-Ctrl-A 


PSTD: Ø6BA IN 93 1B 52 


AUS: 
Ctrl-P-Ctrl-N 


ØØ 
Øl 
ø2 


02 


ASCII / USA 
Frankreich 
Deutschland _ 
England 
Dänemark SE 
Schweden nl 
Italien 

Spanien 

apan 


EIN 





Vun A H N H H H 


GE 


Fremdsprachen | AUS 


Tabelle 3 LABEL-Inhalte für die einzelnen Frend- ` 





Default. Pro WORDSTAR-Diskette kann ~ 
immer Deutsch mit einer ausgewählten 
Fremdsprache kombiniert werden. 


Zur Aufnahme dieses Befehlssatzes in 
Wordstar bieten sich — falls nicht ander- 
weitig vergeben — die Labels PALT: und 
PSTD: mit dem Aufruf TA (alternativer 
Satz) bzw. TN (normaler Satz) an. Die 
Label-Inhalte werden mit dem INSTALL- 
Programm wie folgt gesetzt: 


PALT: 04 1B 25 01 00 
PSTD: 04 1B 25 00 00 


Ein weiterer Schritt muß nun folgen; denn 
es lauert eine böse Falle bei der Drucker- 
Initialisierung PSINIT: und dem Druck-En- 
de PSFINI:. Dort wird normalerweise mit- 
tels 1B 40 = „alles auf normal zurückset- 
Zen der Puffer gelöscht. Daher muß die- 
ser Befehl ersetzt werden durch eine Rei- 
he von Einzelbefehlen, die das Löschen 
des Puffers nicht bewirken. Die genannten 
Labels sind 16 Bytes lang und werden wie 
folgt (gleich) belegt: 


PSINIT: 10 1B 54 1B 25 00 00 1B 4F 1B 
57 00 12 1B 46 1B 48 
PSFINI: 10 1B 54 1B 25 00 00 1B 4F 1B 
57 00 12 1B 46 1B 48 


Damit ist die Patch-Arbeit beendet. Im 
Text schaltet man die Font-Zeichen mittels 
Ctrl-P-A (=? A) ein und mit Ctrl-P-N 
= 1 N) wieder aus und damit auf den nor- 
malen Zeichensatz zurück. 


Die folgende Bildschirm-Textzeile 
— die TAATN-Messung liefert 20 
TAO ÎN nach dem T AAB 1 N-Verfahren 


ergibt ausgedruckt: 


- die a-Messung liefert 2@ Q nach dem afß-Verfahren - 


Zeichen können beliebig zusammenge- 
setzt werden. So entsteht eine Wurzelzahl 


(Abbildung 4) durch einen Wurzelzei- 
chen-Font mit seinen , Dach-Verlångerun- 
gen“ und der — mittels dem ? PH-Back- 
space — darunter gesetzten Ziffern. Letzte- 
re sind wiederum Font-Elemente, da sie 
kleiner sein müssen, um unter das Wur- 
zelzeichen zu passen. 

Mit nur 4 Grundgrafik-Elementen läßt sich 
das in Abbildung 5 dargestellte Mäander- 
band erzeugen, wobei die Elemente in 
Mehrfach-Serien aufgerufen werden. 


Beispiel eines Wurzelausdrucks: = 
aus V und 7 erhält man zunächst: y” _ 

dann werden die Ziffern mit “FH geschrieben: 
SAWXKKXKTHTHTHTHCH12345 “N = Wurzelausdruck _ (Bildschirm) 
(W=Wurzel, X=Dach der Wurzel, Ziffern ee aor m 
Ziffern-Tasten) 


NT734$S = Wurzelausdruck 


Abbildung 4 


Beispiel eines Mäanders: 
aus 4-fachem lE I M E wird: 


Abbildung 5 





Tabelle 4 zeigt eine typische Font-, Kom- 

position“. Die relevante Tasten-Zuord- 

nung kann mit Hilfe des nachstehenden 

Applesoft-Programms ausgedruckt 

werden. 

100 D$ = CHR$(4) : HOME 

110 E$ = CHR$(27) + CHR$(37) + 
CHR$(1) + CHR$(0) 

120 A$ = CHR$(27) + CHR$(37) + 
CHR$(0) + CHR$(0) 

130 PRINT : PRINT D$"PR40" 


140 PRINT D$"PR#1“ : PRINT : PRINT 

150 FOR I = 32 TO 127 

160 PRINT CHR$(I);“ = ";E$; CHR$(I); 
A$ 

170 NEXT 


180 PRINT D$“PR#0“ 


Nachzutragen ist, daß alle Fonts den ent- 
sprechenden Normalschriften Breit, Eng, 
Sperrschrift, Italic, Elite, hoch- und tiefge- 
stellt, Fett und Doppelt sowie Proportional- 
schrift folgen, so daß hierbei eine unge- 
ahnte Fülle von Varianten zur Verfügung 
stehen. 


Peeker 8/85 








Blick über den Zaun: E Jose is) | tz. d i 2 7 8 9 ) [| J É 
Die moderne Satztechnik 

Da sich die Terminologie der Matrixdruk- ENN V Š“ n AA 
ker-Hersteller nicht mit der des grafischen fo üt é p UP Banı.._ - 
Gewerbes deckt, wollen wir auch hier 

noch einmal einen Blick über den Zaun — < _ lacz. = < 
werfen. In der Drucktechnik unterscheidet EE SE r 
man zwischen Schriftgruppe, Schriftart, K++=-)V r t 4 A Ç || AELE] Te? NBA 
Schriftschnitt und Schriftgrad. Die Schrift- 

gruppe (group of typeface) ist eine von10 tar SES Z. K $ < p 9 o + + = EHER..." 
lateinischen Schriftkategorien („französi- 

sche Renaissance-Antiqua“ usw.). Die CLC dJ- Fri) 1 zum: / 1 2 7 6 9 OL J S 
Schriftart (typeface) ist eine individuelle U _ 

Schöpfung einer Schrift (z.B. „Gara- NNN li 6! MER? Y MPAKA) 
mond“), die sich einer Schriftgruppe sub- + ag X é 6 9 ° Z, K I & u Q o #* “= ERAT x. _ > 


sumieren läßt. Es gibt ca. 2000 Schriftar- 
ten. Der Schriftschnitt (typecut; auch font 
genannt) ist eine von mehreren Erschei- 
nungsformen derselben Schriftart (z.B. 
fett, halbfett, mager, kursiv usw.; Sperr- 
schrift gilt dabei nicht als gesonderter 
Schriftschnitt). Der Schriftgrad (type size) 
ist die in Punkt gemessene Größe eines 


Tabelle 4 


0,375mm, angloamerikanischer Punkt 
0,351mm). Die Summe aller Schriftschnit- 
te heißt Schriftfamilie (type family); die 
Summe aller Schriftzeichen eines Schrift- 
schnittes (beim veralteten Bleisatz in allen 
Schriftgraden) heißt Schriftgarnitur (type 


Schriftschnittes (kontinentaler Punkt font). U. Stiehl 





Wellen Sie mit Ihrem MAGINTOSH 


grafisch arbeiten? 






Das MacTablett von 
Summagraphics 
rechender 


Georg-Brauchle-Ring 68 
D-8000 München 50 
Telefon 089/1415077 
Telex 5214793 





LIMITED 


Niederlassung Deutschland 


Peeker 8/85 47 





Tips und Tricks 
in Pascal 





Teil 1: Die versteckte Prozedur ,ldsearch* 


oder wie man Schlüsselwörter halbfett druckt 


von Dieter Geiß 


In dieser mehrere Teile umfassenden 
Serie soll über viele interessante The- 
men für den an Pascal interessierten 
Peeker-Leser berichtet werden. Diese 
werden vor allem programmiertechni- 
sche Kniffe und Eigenheiten des 
UCSD-Systems sein, die nicht in den 
Handbüchern stehen und die man nur 
herausfinden kann, wenn man sich 
lange und intensiv mit dem System be- 
schåftigt. 


Das Problem 


Es sei folgende Aufgabe gestellt: Ein vor- 
handener Pascal-Quelltext, also z.B. der 
SYSTEM.WRK.TEXT, soll auf den Drucker 
oder auch ein anderes Geråt ausgegeben 
werden. Dabei sollen die Pascal-Schlüs- 
selwörter (IF, THEN, ELSE, FOR, DO, 
WHILE...), also die vom Compiler reser- 
vierten Bezeichner (Reserved Words), be- 
sonders hervorgehoben werden, z.B. fett 
oder auch unterstrichen, wie dies auch in 
der Literatur zum Teil üblich ist. Das Pro- 
gramm soll möglichst kurz sein, dabei aber 
auch Kommentare und konstante Zei- 
chenketten erkennen können, in denen 
die reservierten Bezeichner nicht hervor- 
gehoben werden dürfen. 


Die Theorie 


Die Lösung ist eigentlich ganz einfach — 
der Compiler muß die reservierten Wörter 
schließlich auch erkennen können. Warum 
also nicht die (schnelle) Prozedur benut- 
zen, die auch vom Compiler eingesetzt 
wird? 


48 


Es handelt sich hierbei um „Idsearch“, die 
eine UCSD-Standardprozedur ist. Das 
Problem ist nur, daß sie nirgends erklärt 
wird und man deswegen nicht weiß, mit 
weichen Parametern sie aufgerufen wird 
und was sie genau bewirkt. Um das her- 
auszufinden, muß man entweder ein Com- 
piler-Source-Listing haben oder die Pro- 
zedur im Interpreter genau untersuchen. 
Da ein Source-Listing im allgemeinen 
nicht vorliegt, muß man auf die zweite 
Methode zurückgreifen. 


Zunächst aber eine kurze Vorbemerkung: 
Ein Bezeichner (Identifier) ist eine Folge 
von Zeichen, bestehend aus mindestens 
einem Buchstaben (A-Z), gefolgt von be- 
liebig vielen Buchstaben oder Ziffern. Nur 
die ersten acht Zeichen sind jedoch in der 
Apple-Version des UCSD-Compilers si- 
gnifikant. Dies gilt sowohl für die Version 
1.1 als auch für 1.2. 

Findet man in einer Zeichenkette also ei- 
nen Buchstaben, so weiß man, daß es sich 
um einen Bezeichner handeln muß, der so 
lang ist, bis ein Trennungszeichen folgt, 
also ein (ASCII-)Zeichen, welches kein 
Buchstabe und keine Ziffer ist. 


An diesem Punkt setzt die Prozedur „Id- 
search” an. An diese wird ein Zeiger (Cur- 
sor) sowie ein String oder ein Packed Ar- 
ray of Char übergeben. Der Zeiger muß 
auf den ersten Buchstaben des Wortes 
zeigen, das man untersuchen möchte. In 
Tabelle 1 ist ein Beispiel wiedergegeben. 
Dabei soll 14 die Länge des Strings sein, 
die sich im ersten Byte (Byte O des 








Strings) befindet. Symcursor hätte also 
den Wert 1, da das „w“ von while der 
erste Buchstabe des Strings ist. 


Ø 123456789Ø1234 
S [14]: while I < 5 do 
1 


Symcursor 


Tabelle 1 


Nun ruft man Idsearch (Symcursor, S) auf. 
In der Prozedur geschieht nun folgendes: 
Es wird untersucht, ob ein Pascal-Schlüs- 
selwort vorliegt. Dabei wird Symcursor auf 
das Ende des zu untersuchenden Wortes 
gestellt (siehe Tabelle 2). 


Ø 123456789Ø1234 
S [14]: while I < 5 do 
1 


Symcursor 


Tabelle 2 


Gleichzeitig werden aber auch noch drei 
weitere Variablen beeinfluBt, die nicht am 
Aufruf beteiligt sind, aber in der Variablen- 
definition direkt hinter der Variablen „Sym- 
cursor“ definiert sein müssen (siehe Li- 
sting). 


— In „Sym“ wird die Nummer des Symbols 
abgespeichert, das gerade gefunden wur- 
de, wenn es sich um ein Schlüsselwort 
handelt. Der Einfachheit halber wurde 
„Sym“ als Integer-Zahl definiert, was für 
diesen Zweck ausreicht. Eigentlich müßte 
„Sym“ eine Variable vom Aufzählungstyp 
sein, also Sym: (Ident, Comma, Colon, ..., 
DOsy, TOsy,...). Ist Sym = 0, so handelt 


Peeker 8/85 





es sich um kein reserviertes Wort, also um 
einen Bezeichner. Ist Sym < > 0, so 
liegt ein reserviertes Schlüsselwort vor. 
Für while ist die Nummer z.B. 23. 


— Die nåchste Variable „Op“ wird gesetzt, 
wenn es sich um einen Operator handelt, 
also z.B. AND, DIV, MOD, OR, IN. Wird ein 
solcher gefunden, ist Op < > 0 und Sym 
39, 40 oder 41. „Op“ spielt für unser 
Problem aber keine Rolle. 


— Die Variable „ld“ wird ebenfalls beein- 
fluBt. „Id“ ist vom Typ „Alpha“ und kann 
einen Bezeichner (maximal acht Buchsta- 
ben) enthalten. Wenn Sym = 0 ist, dann 
muB es sich um einen selbst-definierten 
Bezeichner oder um eine vordefinierte 
Prozedur wie ,Unitread" etc. handeln. 
„Id“ enthält dann nach dem Aufruf von 
„Idsearch“ die ersten acht Buchstaben 
des gefundenen Bezeichners, die sogar 
schon in Großbuchstaben umgewandelt 
sind. Man könnte „Id“ also dazu benut- 
zen, um etwa mit der Funktion „tree- 
search“ (siehe Pascal Language Referen- 
ce Manual, S. 49) den Bezeichner weiter 
zu untersuchen oder in einen Binärbaum 
einzufügen, um später ein sog. Cross- 
Reference-Listing von allen Bezeichnern 
zu bekommen. 


Das Programm 


Da das Programm möglichst kurz sein soll- 
te, wurde auf schnelle Ein/Ausgabe-Routi- 
nen verzichtet und statt dessen die einge- 
bauten Prozeduren „Readln“ und 
„Writeln“ benutzt, die allerdings bei Text- 
files nicht besonders schnell laufen. Wer 
möchte, kann an dieser Stelle noch Ver- 
besserungen anbringen. 

Die Abfrage nach Kommentaren und kon- 
stanten Zeichenketten ist komplizierter als 
die Bezeichnersuche selbst, die sich in 
wenigen Zeilen abhandeln läßt. 


Nach dem Starten des Programms werden 
zuerst Ein- und Ausgabe-Files erfragt. 
Läßt sich ein File nicht öffnen, wird das 
Programm verlassen. Danach kann man 
einen Präfix- und einen Suffix-String ein- 
geben. Diese Strings werden dem gefun- 
denen Pascal-Schlüsselwort voran- oder 
nachgestellt. Will man beispielsweise die 
Schlüsselwörter unterstrichen ausgeben, 
so gibt man für den Epson-Drucker als 
Präfix die Zeichenfolge <ESC> ,-' ,1' und 
als Suffix <ESC> ,-' ,0' ein, für den Ima- 
gewriter <ESC> Ai und <ESC> ,Y'. 
Schließlich kann man noch wählen, ob 
man eine Zeilennumerierung haben 
möchte. 


Peeker 8/85 


IDSEARCH 


{$C von Dieter Geiß, 28-November-1984} 
{$R-} 


program FastIdsearch (input, output); 


type Alpha = packed array [Ø..7] of char; 
MaxStr = string [255]; 
var Lines : integer; 
Lnum : boolean; 
Comment : integer; 
Comments : array [1..4] of string [2]; 
Š : MaxStr; 
Pre + String; 
Post : String; 
Infile : interactive; 
Qutfile : interactive; 
EENEG ) 
procedure Init; 
var Ç : char; 
begin (Init) 
($I-) 
page (output); 
Lines := Ø; 
writeln ('Schnelle Schlüsselwortsuche mit idsearch'); 
writeln ('von Dieter GeiB'); 
writeln; 
write ('Eingabefile: '); 
readln (S); 
openold (Infile, S); (reset geht auch) 
if IOresult <> Ø then 
begin 
openold (Infile, concat (S, '.TEXT')); 
if IOresult <> Ø then exit (program) 
end; (if) 
write ('Ausgabefile: '); 
readln (S); 
if S= '' then S := "CONSOLE: ' ; 
opennew (Outfile, S); (rewrite geht auch) 
if IOresult <> Ø then exit (program); 
writeln; 
write (' Pråfix-String: '); 
readln (Pre); 
write ('Postfix-String: '); 
readln (Post); 
writeln; 
write ('Zeilennummerierung? '); 
read (C); 
writeln; 
writeln; 
Lnum = C in ['J', 'j']; 
Comment := 0; 
Comments [1] := '{'; 
Comments [2] := '(*'; 
Comments [3] := ')'; 
Comments [4] := '*)' 
($I+) 
end; (Init) 
EE geehrt ) 


procedure Scanner (var S : Maxstr); 


var SymCursor : integer; 


Sym : integer; 
Op : integer; 
Id : Alpha; 

OldCursor : integer; 
P : integer; 


begin (Scanner) 


SymCursor := 1 + scan (length (S), <> ' ', S [1]); 
if Comment <> Ø then (Kommentar möglicherweise...) 
begin (...in dieser Zeile zu Ende) 
P := pos (Comments [Comment + 2], S); 
if P <> Ø then 
begin 
SymCursor := P + length (Comments [Comment + 2]); 
Comment := Ø 
end (if) 
end; (if) 


49 





Ubrigens gibt es noch weitere Prozedu- 
ren, die der Compiler erkennt und nir- 
gends beschrieben werden. Diese haben 
allerdings keine große Bedeutung. „Open- 
old“ beispielsweise ist nämlich gleichbe- 
deutend mit „Reset“, und „Opennew“ 
entspricht „Rewrite“. 

„Time (11, 12)“ füllt beim Apple beide Inte- 
ger-Zahlen I1 und 12 mit O, weil keine Uhr 
vorhanden ist. Hätte man eine Uhr ange- 
schlossen, müßte man den P-Code-Inter- 
preter an der Stelle patchen, wo die 
Adresse der Standardprozedur „Time“ 
steht ($D112 und $D113 in der Bank 1). 
Übrigens hat „Segment“ den gleichen Id- 
Code wie „Program“. Man könnte also 
statt „Program Test“ auch „Segment 
Test“ schreiben, statt „Segment Proce- 
dure“ auch „Program Procedure“. 


Im nächsten Teil soll der Frage nachge- 
gangen werden: Kann man den P-Code 
optimieren? 


while (SymCursor <= length (S)) and (Comment = 0) do 
begin 
OldCursor := SymCursor; 
if S [SynCursor] in ["A".; 2", "et, fei) 
then 
begin 
idsearch (SymCursor, S); 
if Sym <> Ø then 
begin 
insert (Post, S, SymCursor + 1); 
insert (Pre, S, OldCursor); 
SymCursor := SymCursor + length (Post) + length (Pre) 
end (if) 
end (if) 
else 
if S [SymCursor] = "ii" (konstante Zeichenkette) 
then SymCursor := SymCursor + 1 + 
scan (length (S) — SymCursor, = '''', S [SymCursor + 1]) 
else 
begin 
if S [SymCursor] = '(' 
then Comment := 1 
else if pos ('(*', S) = SymCursor then Comment := 2; 
if Comment <> Ø then 
begin 
P := pos (Comments [Comment + 2], S); 
if P > SymCursor then (Ende des Kommentars...) 


begin (...in gleicher Zeile) 
SymCursor := P + length (Comments [Comment + 2]) - 1; 


Comment 0 
end (if) 
end (if) 
end; (else, else) 
SymCursor := SymCursor 
end (while) 
end; (Scanner) 


begin (FastIdsearch) 
Init; 
while not eof (Infile) do 
begin 
fillchar (S, size_of (S), 0); 
readln (Infile, S); 
Scanner (S); 
Lines := Lines + 1; 
if Lnum then write (Outfile, Lines : 5, ' '); 
writeln (Outfile, S) 
end; (while) 
close (Infile); 
close (Outfile, lock) 
end (FastIdsearch). 





SUPERDUMP und Apple je 


Das Programm Superdump aus Peeker 6/85, S. 22 läuft ohne Änderung nicht auf dem Apple Ilc. Die Ursache dieses Problems 
liegt nicht in einer Unzulånglichkeit des Programms, sondern in der eigenwilligen Konstruktion der seriellen Karte im Ilc (die 
Image-Writer-Toolkit-Diskette unter DOS 3.3 funktioniert ebenfalls nicht auf dem Ilc.). 

Bei der Ubertragung eines Zeichens wird in einem Hardwareregister der Status des Druckers abgefragt. Ein gesetztes Bit 6 bei 
der Super Serial Card signalisiert die Bereitschaft des Druckers, ein neues Zeichen entgegenzunehmen. Dieses Register wurde 
beim llc geändert, so daß nun das Bit 5 diese Aufgabe übernimmt. 

Um das Programm auf den Apple llc anzupassen, muß die Routine zur seriellen Ausgabe geändert werden. Diesen Patch kann 
man von der Apple-Version abhängig machen, um das Programm auf den verschiedenen Rechnern starten zu können. 
Dazu muß folgende Zeile in das Applesoft-Programm SUPERDUMP.IMAGEWRITER eingefügt werden: 


1325 IF PEEK (64435) = 6 AND PEEK (64448) = 0 THEN POKE 34499 32 


Die beiden PEEK-Anweisungen fragen die sog. Machine-ID-Bytes ab, wodurch nur im Falle des llc das entsprechende Byte in 


der Ausgaberoutine geändert wird. 


50 


Peeker 8/85 









von Dr. Jürgen B. Kehrel 


Für den Apple II gibt es rund ein Dutzend 
verschiedener Assembler. In ihren Stan- 
dardbefehlen halten sich fast alle an die 
Opcodes (= Operation Codes, Befehls- 
worte), die von dem ersten Hersteller des 
6502-Prozessors, MOS Technology Inc., 
eingeführt wurden. Ein guter Assembler 
verfügt darüber hinaus noch über eine An- 
zahl von sogenannten Pseudo-Opcodes, 
die nicht zur Steuerung des 6502 dienen, 
sondern vielmehr Befehle für den Assem- 
bler selber darstellen. Diese sind nicht ge- 
normt, so daß eine direkte Übertragung 
auf einen anderen Assembler meistens 
nicht möglich ist, auch wenn viele Ähnlich- 
keiten vorliegen. Im Peeker sollen bevor- 
zugt Listings im Big-Mac- oder Merlin- 
Format veröffentlicht werden, was die an- 
deren Assembler natürlich nicht aus- 
schließt. 


Assembler 44 


Assembler-Pseudo- 
Opcode-Referenztabelle 


Um Ihnen eine Hilfe zur Ubertragung von 
fremden Pseudo-Opcodes auf Ihr eigenes 
System zu geben, sind nachfolgend die 
Befehlsworte der fünf gebräuchlichsten 
Assembler einander gegenübergestellt. 
Halbfett gedruckt finden Sie in alphabeti- 
scher Reihenfolge die Liste der Big-Mac- 
bzw. Lisa-2.5-Befehle und ihre Entspre- 
chungen bei den übrigen Assemblern. Ist 
ein Code eingeklammert, dient er nur un- 
ter speziellen Bedingungen als Ersatz. Ein 
Strich in einer Rubrik bedeutet, daß der 
entsprechende Befehl nicht vorhanden ist. 
Das schließt aber nicht aus, daß Sie über 
einen Umweg nicht auch zum selben Er- 
gebnis kommen können. Alle Angaben 
geschehen nach bestem Wissen, aber oh- 
ne Gewähr, denn ich arbeite natürlich nicht 
mit all diesen Assemblern. 


Tabelle siehe nächste Seite 


ProDOS-Analyse 


Version 1.0.1, 1.0.2, 1.1.1 


Arne Schåpers 


1985, ca. 450 S., kart., 
DM 68,— 
ISBN 3-7785-1134-3 


Dr. Alfred Hüthig Verlag 
6900 Heidelberg - Postfach 1028 60 


Peeker 8/85 


„Die ProDOS Analyse" ist die 
umfangreichste und detaillier- 
teste Darstellung, die jemals 
ein Apple-Betriebssystem er- 
fahren hat. Wer die „Innerei- 
en“ von ProDOS bis zum letz- 
ten Byte, z. T. bis ins letzte Bit 
kennenlernen möchte, braucht 
dieses Buch. Das komplette 
Betriebssystem (Urlader, MLI, 
Disk-Driver, RAM-Disk-Driver 
und Uhr-Routine) mit Ausnah- 
me des BASIC-SYSTEM wird 
mit umfangreichen Kommenta- 
ren und Übersichtstabellen dis- 
assembliert. Dabei werden alle 
bisherigen Versionen von 
1.0.1 bis 1.1.1 berücksichtigt. 
„Die ProDOS Analyse“ be- 
schreibt erstmals auch mehre- 
re Programmierfehler, die bis 


in die neueste Version zu fin- 
den sind. Auch die nicht im 
„Technical Reference Manual" 
aufgeführten Eigenschaften 
von ProDOS werden analysiert 
und beschrieben, z. B. die ver- 
trackten eingebauten Testrou- 
tinen zur Identifikation der ver- 
schiedenen Apple Il Modelle 
und eventueller Nachbaugerä- 
te. Programmierer, die Pro- 
DOS versionsabhängig „pat- 
chen“ möchten, erhalten hier 
den genauen Überblick, wo 
was geändert werden muß, da- 
mit dies keine negativen Kon- 
sequenzen hat. Durch die mi- 
nutiöse theoretische Sezie- 
rung von ProDOS eröffnen 
sich völlig neue programmier- 
praktische Perspektiven. 





51 


#Adresse 
#<Adresse 
#>Adresse 

#/Adresse 


52 


Merlin Lisa 2.5 Toolkit S-C Macro 


DW 
ASC 
(REP/CHR) 
BGE 
BLT 
DB 
DW 
DDB 
DCI (DCI) 
DDB DDB 
DFB 
(DS) 
ELSE 
END 
EOM/<<< 
EQU 


EQU 
EXP ON 


LST ON LIST ON 


- MA 
LST OFF .LIST OFF 
OBJ OBJ 
ORG ORG 
PAGE PG 
PAU - 
PCM/>>> unnötig 
PUT IN 
SAV TF 
SKP - 


TR ON - 
USR 
VAR 


ERR 
LUP 


CHR 
DEND 
SECT 

ENTRY 
EXTRN 
MSB ON 
MSB OFF 
REL 
REP 
#Adresse 
#>Adresse! 
#<Adresse! 

/Adresse - 


#Adresse 
#<Adresse 
#+> Adresse 
#/Adresse 


#Adresse #Adresse 
#<Adresse - 
#> Adresse - 
#/Adresse 





Anmerkung 


2-Byte-Adresse / Ausdruck Lo-Hi 
ASCII-String (“ = Bit 7 gesetzt) 
Drucke Anzahl Sternchen 
FLASH-ASCII-String 

= BCS 

= BCC 

Adresse / Ausdruck nur Lo-Byte 
Kontrollzahl (Checksum) 
2-Byte-Adresse / Ausdruck Lo-Hi 
2-Byte-Adresse / Ausdruck Hi-Lo 
ASCII-String, letztes Bit invertiert 
Führe DOS-Befehl aus 
2-Byte-Adresse / Ausdruck Hi-Lo 
Definiere Byte 

Reserviere Speicher 

Bedingte Assemblierung ELSE 
Programmende 

Ende einer Macrodefinition 

Lisa: Zero-Page-Label 1 Byte 
Label 1 oder 2 Byte (Lisa 2 Bytes) 
Drucke Macros aus 

Bedingte Assemblierung Ende 
FLASH-ASCII-String 

Liste alle Bytes pro Zeile 
Adresse / Ausdruck nur Hi-Byte 
1-Byte Hexadezimalwert 
Verkette Quellcodefiles 

Bedingte Assemblierung Anfang 
INVERSE-ASCII-String 

Label Neudefinition 
Labeleingabe über Tastatur 
Listing anschalten 

Beginn Macrodefinition 

Listing ausschalten 

Listet nur 3 Bytes pro Zeile 
Aktuelle Objekt-Code Adresse 


Adresse für ablauffähigen Code 


Sende Ctrl-L (neue Seite) 

Pause, Abbruch 

Neuer ORG, ohne OBJ zu ändern 
Macroaufruf 

Verkettung von Quellcode-Files 
Automat. Obj.-Code Abspeicherung 
Sende Zeilenvorschub 
ASCII-String mit Längenbyte 
Liste nur 3 Bytes pro Zeile 

Titel auf jeder Ausdruckseite 
Benutzerdefinierbarer Befehl 
Labeldefinition in Macros 
Fehlermeldung, wenn Ausdruck <> 0 
Schleifenanfang 

Schleifenende 

Wie ASC, nur String rückwärts 
Definiere Byte für REP 
Dummyteil Ende 

Dummyteil Anfang 

Globales Label (unbenutzt) 
Externes Label (unbenutzt) 

Setzt Bit 7 in Strings 

Löscht Bit 7 in Strings 
Verschiebbarer Code für RLOAD 
Druckt CHR mehrmals 

Lo-Byte eines 2-Byte-Ausdrucks 
Lo-Byte eines 2-Byte-Ausdrucks 
Hi-Byte eines 2-Byte-Ausdrucks 
Hi-Byte eines 2-Byte-Ausdrucks 


Peeker 8/85 


@ va ECH und 
ven mehr. 


Musteranzeige privat 


1 Druckzeile à 32 Buch- 
staben nur D DM 5,— 


| zuzügl. oe MwSt 
S Beispiel: x 





Verkaufe “yaaa wapu Typenrad- 
drucker mit Apple-Interface. 
Preis auf age Tel. 007 


nur DM 17. We i nkl. 


Musteranzeige gewerblich 


Die einspalti e Millimeter- 
zeile (42 mm breit) kostet 
5, 50 Lem MwSt. 


Beispiel: 


Neu im Reeg Professionelle, 
separate Tastatur für Apple Il 

plus 16 Funktionstasten und sepa- 
ratem Ziffernblock. 

| Fa. Keyboard & Co. 








4444434 DEE| ER 94 


MAGAZIN FÜR APPLE-COMPUTER 


AUFTRAG FUR KLEINANZEIGEN 


Bitte veröffentlichen Sie in der nächsterreichbaren Ausgabe nachstehenden 
Text unter folgender Rubrik: 


[ ] suche Hardware L] suche Software O Verschiedenes 
L] biete Hardware CO biete Software O Chiffre 





C] Tausch 
L] Kontakte 












OTT TT TITT 
GLE 


Bitte jeweils 32 Buchstaben pro Zeile-einschlieBlich Satzzeichen und Wort- 
zwischenråume. Bitte Absender nicht vergessen. 
Chiffregebühr DM 6,- zuzügl. MwSt. 


999999 | MAGAZIN FUR APPLE-COMPUTER 


Seite — > 








Zu der in »peeker«, Heft erschienenen 


L] Anzeige [| Produktbesprechung 





über 


bitte ich um detaillierte Information. 
Ich wünsche [| Prospekt, Datenblatt [| Preisliste [| schriftliches Angebot [ tel. Rückruf 


Produkt und Bestellnummer 


gebe ich neben- 
stehende Bestellung 
unter Anerkennung 
Ihrer in der Anzeige 
genannten Liefer- und 
Zahlungsbedingungen 
auf. 





Unterschrift (für Jugendliche unter 18 Jahren der Erziehungsberechtigte) 


444444 DEEKER 44 


R APPLE-COMPUTER 





Schreiben Sie uns, wenn Sie Fragen, Ergänzungen oder Anregungen zu 
Aufsätzen in »peeker« haben: 


£ 
R 
Q 
£ 















Bitte veröffentlichen Sie den um- 
stehenden Text von Zeilen 
DM in der nàchsterreich- 
aren Ausgabe von »peeker« 








a 
b 










Bei Angeboten: Ich bestätige, daß ich alle 
Rechte an den angebotenen Sachen besitze 





Unterschrift 


Telefon mit Vorwahl 


Anschrift der Firma angeben, bei der Sie 
bestellen bzw. von der Sie Informationen 
wünschen 





Karte bitte vollständig ausfüllen 


Vorname, Name 


Firma 


Straße 


PLZ/Ort 


Telefon mit Vorwahl 


® 
5 
+ 
2 
= 





ANTWORTKARTE 


peeker-Borse 
Anzeigen-Service 


Dr. Alfred Hüthig Verlag 
Postfach 10 28 69 
6900 Heidelberg 1 


POSTKARTE 


Firma 


Straße 


PLZ/Ort 


POSTKARTE 


peeker 
Redaktion 


Postfach 10 28 69 
6900 Heidelberg 1 








99999 





Produkt- 
Karte 


Wünschen Sie 
weitere Informationen 
zu einem der im Heft 
vorgestellten 
Produkte ? 





Nichts einfacher als 
das. 

Produkt-Karte aus- 
fullen, mit 60-Pfennig 
frankieren und 
absenden. 


Vorher aber nicht 
vergessen: 

kreuzen Sie an, 
welchen Informations- 
wunsch Sie haben. 


Damit erleichtern Sie 
dem Hersteller 

eine gezielte Beant- 
wortung Ihrer Anfrage. 


Zum SchluB tragen 
Sie auf der Rück- 
seite die genaue 
Anschrift des 
Inserenten/Herstellers 
und Ihre vollståndige 
Firmenanschrift ein. 





: MAGAZIN FÜR APPLE-COMPUTER 





Verkauf Hardware 


Apple - DOT - Matrix - Drucker 
mit Parallel-Interface-Karte (Apple) 
VHB DM 1600,- 
H. Bösing, Erlenweg 8, 2872 Hude 2, 
Tel. 044 84/746 


APPLE comp. (6 Mon. Garan- 
tie. Neugerät), mit 64 K, 6502 u. 
Z80 CPU im IBM-Gehäuse, sepa- 
rater Tastatur, 80 Zeichen Disk- 
contr., 1 Laufw. 160 K, DM 1950,— 
Monitor bernst. DM 280,- Tel. 
06897/6903 


APPLE-Komp. + Cards zu Su- 
perpreisen! Ab DM 65,00! Liste von: 
RTE Software/TREIBER GmbH 
7546 Enzklösterle 


Verk. APPLE 
0 94 09/933 


lc + Zub. 


Org. APPLE Disk-Driver, 2 
Stück mit Controler 900 DM. 
PREH-Commander Tastatur 150 
DM. Tel. 0241/83661 


Neuwertig (3 Wochen im Einsatz) 
zu verkaufen: 2 corvus harddisc 
à 6 MB sowie 1 disc-server. 
Rückfragen bitte an Fa. Vitra, Hr. 
Dr. Treffert, Tel. 07621/702311 


Verkaufe TEAC-Doppellauf- 
werk 2 x 640 KB mit R-PHI Con- 
troler. Beide ungebraucht VB: 
1650,— DM, Tel. 0931/41 3258 





DEE 


Fernschreiberinterface am 
Gameport m. Programm DM 79,—- 
P. Benner, Hubertusstr. 131, 4150 
Krefeld 


BROSE 120 (csc)-Tastatur / 
22 MHz Monitor (NEC) Sonder- 
preise !!! Riter, Hille 057 03/672 


Verkauf Software 


APPLE Il: "GIANT WORLD?’ ist 
da!! x Das neu Top-Adventure mit 3 
* Spitzengrafik für riesigen * 
* Spielspaß! Es lohnt sich! x 
Für nur 89,- DM Vorkasse o.NN 
bei xxx FANTASTIC-Software *** 
** Grasweg 7, 2857 Langen 3 xx 


— — - STOCKMASTER II — — — 
Das Apple-Programm für echte Bör- 
sengewinne. Nur 485,- DM. 
Töngi, Computer-Praxis. Aspeltstr. 4, 
D-6500 Mainz 1. 


APPLE Il emuliert SHARP- 
POCKETC. Dat./Prg. ü. Game/ 
11 Pin-C. Inf. geg. 2 x 0,80 DM in 
Bfm. Klaus Schmidt, Hasenclever- 
str. 25, 2000 Hamburg 74 


fig-FORTH —— DM 15,00 
Assemblerlisting f. APPLE DM 15,-, 
FORTH auf Disk f. APPLE DM 45,— 
Info kostenlos —— C. Schmidt, 
Rungestr. 8, 3500 Kassel 


ker 





Börse 


Verkaufe für Apple Ile/llc 
Originalprogramm 'Applevorks', 
Neueste Version (1.2.), VB 500 DM, 
Tel. 0221/77 93 29. 


Ankauf Software 


Für Il-e (II-c) Programm gesucht 
das Daten auf Diskette bearbeitet 
Tel. 0561/498343 od. /804 48 38 


Ile-Neuling sucht Programme 
aller Art. Liste bitte an Chiffre 
P 1003 


APPLE REPARATUREN 

(auch compatible M-boards, z.B. 
Atlas, Arca, CES, Datastar, 
Dipa, Lasar, Mewa, PC-48+ 
46, Plato, Radix, o. ae. SO- 
wie Zusatzkarten und Disk- 
Drives) führt unser Spezialteam 
mit mehr als 5-jähriger Kunden- 
und Reparatur-Dienst-Erfahrung, 
garantiert zuverlässig und beson- 
ders kostengünstig aus. Bitte ge- 
naue Fehlerangabe sowie Tel.-Nr. 
für evtl. Rückfragen nicht ver- 
gessen. 

Auf Wunsch Kostenvoranschlag. 
aaa-electronic gmbh 
Habsburgerstr. 134, 7800 Freiburg, 
Tel. 07 61/27 68 64, 

Tx. 772642 aaa d 


999997 





HAHHIHHHHHHFHHFHHHFHHHHFHFHH 


Floppysubsystem 
für Apple H 


2 x 3,5" TEAC FD-35F 
max. 2 x 1MB 
Autopatch-Controller 
inkl. Manual und SW 
ALU-Profil-Gehàuse m. Netzt. 
komplett anschluBfertig 
nur DM 2398,— 


een 
Telekommunikation * 


Anschlußkabel 
Dataphon S21d 
Terminalsoftware 
komplett anschlußfertig 
nur DM 398,— 


HAHHHFHFHHFHHHFHFHHHIFH 


TISCH & ZETTL GdbR 
Elektronicvertrieb 
Rosenstr. 33, 8034 Germering 
Telefon 089/841 68 17 


KKK KKK KKK KKK 


HH HHF H HH H HH H H H 
HH H H H HH H H H H H H H HH 


H HH HH HH H HH H H H H H H 
H H HH HH H HH HH 


MC 3470 (der Leseverstårker auf 
dem Analogboard): DM 10,-, A. 
Deckers, PF 967, 7 Stuttgart 1 


Erscheinungstermin für 


Ausgabe 9/85 
ist am 26. 8. 1985 





Epson Interfaceumbau 
f. AWorks DM 20. Mahr, Waldak- 
ker 71, 7300 Esslingen 


Lieber ’ROBO’ bitte melden. 
Manfr. Rost, Düsseldorf, Suitber- 
tusstr. 99 








es RUND 


Büroelektronik 





Keithstr. 26 - 1 Berlin 30 : ® 0 30-26 111 26 


== RUND 


Kg Büroelektronik GmbH 
Bachstr. 104 : 2 HH 76 : % 0 40-220 1155 


Für weitere Informationen zu einem der in dieser Ausgabe vorgestellten 
Produkte stehen Ihnen die Produktkarten zur Verfügung 


Bitte verwenden Sie für Kleinanzeigen die vorgedruckten Antwortkarten in 
diesem Heft. 


Peeker 8/85 





55 








von Roland und Manfred Fietkau 


„Sie nimpt viel Koppfs" 
Adam Ries (1492-1559) 


In der Kombinatorik und Wahrscheinlich- 
keitsrechnung spielen Fakultäten eine 
wichtige Rolle. Der Ausdruck N! (N-Fakul- 
tät) bedeutet: 1:23... (N-1) : N. N ist 
dabei eine positive natürliche Zahl. Zu- 
sätzlich muß definiert werden: 0! = 1. 


Fakultäten lassen sich im Prinzip sehr 
leicht berechnen; bereits eine einfache 
Applesoft-Zeile genügt: 


10 F = 1: INPUT “Fakultät von ":N: 
FORI=1TON:F= Få]: NEXT: 
PRINT “F= "E 


Schon nach einigen Versuchen wird man 
jedoch an die Grenzen dieses einfachen 
Verfahrens stoßen. Zwar werden die Wer- 
te von O! bis 12! noch exakt berechnet, 
doch ab 13! liefert Applesoft nur noch 
Nåherungswerte. Der Grund liegt darin, 
daß Mantisse und Exponent einer FP-Va- 
riablen nur 32 Bits umfassen. Konsequen- 
terweise bricht das Applesoft-Programm 
auch ab 34! mit einem Overflow-Error ab. 
Um auch höhere Fakultäten stellengenau 
berechnen zu können, muß man sich also 
einer anderen Methode bedienen. Mit 
(viel!) Papier und Bleistift ist die Berech- 
nung leicht möglich: Man denke daran, 
daß vor der Entwicklung des Chips ganze 
Tabellen „zu Fuß“ berechnet wurden. 
Genau das ist die Methode, die auch das 
Assembler-Programm FAKULTAET be- 
nutzt. 


Das Verfahren 


Das Programm wertet den numerischen 
Ausdruck nach „&“ aus und überträgt ihn 
nach $0000 und $0001. 

Um zeitaufwendiges Umrechnen (hex in 
dezimal) zu vermeiden, werden alle Be- 
rechnungen im Dezimalmodus (BCD- 


56 


Fakultäten 





Arithmetik) durchgeführt. Das bedeutet, 
daß der zu berechnende Ausdruck nicht 
größer als 9999 sein darf (9999! ist bereits 
eine Zahl mit über 35 000 Stellen). 

Die zu berechnende Fakultät wird zu- 
nächst auf 1 initialisiert und dann fortlau- 
fend mit den Zahlen von 1 bis N multipli- 
ziert. Da eine Multiplikationsroutine jedoch 
sehr zeitaufwendig ist, legt sich das Pro- 
gramm durch Aufaddieren eine Tabelle an, 
in der alle Multiplikationsergebnisse von 0 
- N bis 99 - N eingetragen werden. Eine 
einfache Überlegung zeigt, daß dafür 
höchstens 3 Bytes pro Tabellenelement 
benötigt werden. Die aktuelle Doppelziffer 
(2 BCD-Stellen = 1 Byte) der Fakultät wird 
als Pointer auf die erstellte Multiplikations- 
tabelle benutzt. Das niederwertige Byte 
(LL) wird direkt in die Fakultät eingetragen, 
das mittlere (MM) und höchstwertige Byte 
(HH) werden als Überlauf „gemerkt“ und 
bei der Berechnung der nächsten Doppel- 
ziffer berücksichtigt. Das ist im Prinzip die 
Methode der schriftlichen Multiplikation, 
nur daß die Berechnungen mit jeweils 
zwei Stellen durchgeführt werden. Wer die 
Multiplikationstabelle (0..99 - 0..99) aus- 
wendig kennt, kann diese Methode auch 
beim schriftlichen Rechnen benutzen. Er 
muß dazu nur zwei Überträge berücksich- 
tigen. 

Wenn der Kopf (das höchstwertige Byte) 
der Fakultät erreicht ist, werden die Über- 
träge vorangestellt, und der Pointer wird 
entsprechend erhöht. 

Dieses Verfahren wird so lange wieder- 
holt, bis N erreicht ist. Danach erfolgt der 
Rücksprung zu Applesoft. 


Benutzung des Programms 


Der Befehl ,&P" bewirkt den Ausdruck der 
berechneten Fakultät auf dem Bildschirm 
über die Monitor-Routinen PRBYTE und 
PRHEX. Die Ausgabe kann durch Drücken 


einer beliebigen Taste unterbrochen und 
nach erneutem Tastendruck fortgesetzt 
werden. 


Nach Eingabe von „&N“ (N = Next) wird 
die nächsthöhere Fakultät berechnet. 

Will man die numerische Eingabe über 
eine Variable vornehmen, so sollte der 
Variablenname nicht mit „P“ oder „N“ 
beginnen, da dann direkt in die PRINT- 
oder NEXT-Routine gesprungen wird. Der 
numerische Ausdruck nach „&“ muß po- 
sitiv sein und im Bereich 0..9999 liegen. 
Der Bereich ab $2000 für die berechnete 
Fakultät erlaubt es, den Vorgang der Be- 
rechnung über HGR mitzuverfolgen. Deut- 
lich ist zu sehen, wie die Fakultät sehr 
schnell größer wird, während am Ende ein 
immer länger werdender Schwanz von 
Endnullen mitgeschleppt wird. 


Ein kleines Applesoft-Programm berech- 
net die Anzahl der Endnullen einer Fa- 
Kultät: 


10 INPUT “N! EN: X = N 
20 | = INT (X / 5) 


30 SU = SU + I 
40 IF | > = 5 THEN X = I : GOTO 20 
50 PRINT "Endnullen von “;N;“! = ";SU 


Die Anzahl der Stellen einer Fakultåt kann 
man durch Addition der dekadischen Lo- 
garithmen von 1 bis N ermitteln: 


10 INPUT “N! “€N 

20 KO = 1 / LOG (10) 

30 FOR 1 = 1 TO N 

40 SL = SL + LOG (l) * KO 

50 NEXT 

60 PRINT “Stellenzahl: "; INT(SL+1) 


Soll das Assembler-Programm von einem 
Applesoft-Programm aus benutzt werden, 
sollten HIMEM auf 9 * 4096 und LOMEM 
auf 6 * 4096 + 6 * 256 gesetzt werden, da 
FAKULTAET den Bereich $9000 bis 
$91FF belegt und die Multiplikationstabel- 
len bei $9200 bis $94FF ablegt. Bei einem 
nicht allzulangen Applesoft-Programm 
(Programmende höchstens $1FFF) sollte 
genügend Platz für die Variablen vorhan- 
den sein. Der Ampersand-Vektor muß 
vom Monitor aus (3F6: 00 90) oder von 
Applesoft durch 

POKE 1014,0: POKE 1015,144 

initialisiert werden. 

Das Applesoft-Programm FAKULTAET.- 
DEMO zeigt ein Beispiel zur Benutzung 
der Fakultät-Routine. 


Peeker 8/85 


= ASSEMDLER as 





FAKULTAET 


STA 
JMP 
Sk de % IH HH HIF HH H H H H H H H H H H H H H H H H H H H 
DEX 
BMI Fl 
LDA $1ØØ,X 
SEC 
SBC +$30 
RTS 
F1 LDA #9 
RTS 


Fakultäten Ø..9999 


Roland Fietkau 
Manfred Fietkau 
April 1985 


(O O AO OQ Ë Q Ñ rt 


H H H H H H H HH H H H H de H H H H H H H H H H H H H H H H 
* * 
DOPRINT JSR PRINT 
JMP ALLDONE 
NEXTFAK LDA HOLDPLO 
STA PEND 
LDA HOLDPHI 
STA PEND+1 
SED 
LDA NLO 
STA CLO 
CLE 
ADC #1 
STA NLO 
LDA NHI 
STA CHI 
ADC #9 
STA NHI 
CLD 
JSR STØ 
ALLDONE JSR CHRGET 
RTS 


ORG $9ØØ0 
* 
* FAC -> String 
FOUT EQU $ED34 
* numerischen Ausdruck auswerten 
FRMNUM EQU $DD67 
* linkes Nibble drucken 
PRHEX EQU $FDE3 
* Byte drucken 
PRBYTE EQU $FDDA 
HOME EQU $FC58 
* Character Output 
COUT EQU $FDED 
CHRGET EQU $ØØB1 
KEY EQU $C000 
STROBE EQU $C010 
* Low-Byte der berechneten Fakultät 
FAK EQU $2000 
* 
* ABCD! Low/high (dezimal) 
NLO EQU $ØØ 
NHI EQU $Ø1 
* Pointer zum hochzàhlen 
CLO EQU $92 
CHI EQU $Ø3 
* Pointer auf Fakultåtsende 
PEND EQU $Ø4 
* Uberlauf low/high 
ULO EQU $Ø6 
UHI EQU $Ø7 
PCOUNT EQU $FE 
* 
* Multiplikationstabellen 
MULTLO EQU $9200 
MULTMI EQU $9300 
MULTHI EQU $9400 
* 
HH HHIH HHIH KKK 
* 


Aktuelle Doppelziffer 

von FAK wird von 1 bis 99 
aufaddiert und in 
MULTLO/MI/HI übertragen 


* > ÅÅÅ 


MULTTAB LDX zi 

STX COUNT 

LDA +Ø 

STA HOLDLO 

STA HOLDMI 

STA HOLDHI 

SED 

CLC 

LDA HOLDLO 

ADC CLO 
HOLDLO 
MULTLO,X 
HOLDMI 
CHI 
HOLDMI 
MULTMI,X 
HOLDHI 
+9 

STA HOLDHI 

STA MULTHI,X 

LDA COUNT 

ADC #1 

BCS TABDONE 

STA COUNT 

TAX 

JMP MUl 

TABDONE CLD 
RTS 


CMP #'N' 
* 
* Nächste Fakultät berechnen 
BEQ NEXTFAK 
CMP #'P' 
Fakultät ausgeben 
BEQ DOPRINT 


Numerischen Ausdruck bei TXTPTR 

in FAC übertragen und durch 

FOUT in String bei $100.. umwandeln 
String dezimal in $ØØ/$Ø1 


JSR FRMNUM 
JSR FOUT 
LDX #Ø 

LDA $1ØØ,X 
BEQ A2 

INX 

JMP Al 

JSR FLOAT 
STA NLO 
JSR FLOAT 
ASL 

ASL 

ASL 

ASL 

ORA 

STA 

JSR 


* 
COUNT HEX ØØ 
HOLDLO HEX ØØ 
HOLDMI HEX ØØ 
HOLDHI HEX ØØ 
HOLDPLO HEX ØØ 
HOLDPHI HEX ØØ 
x 
* Initialisierung 
* 
COMP LDA #9 
STA MULTLO 
STA MULTHI 
STA MULTMI 
STA CHI 
STA PEND 
LDA #>FAK 
STA PEND+1 
+Ø 
+1 
(PEND), Y 
CLO 





Peeker 8/85 57 


58 


JSR 
BCC 
LDA 
STA 
LDA 
STA 
RTS 
JSR 
JMP 


Testen, ob 


* * Å 


e 
PI 
u 
H 


LDA 
CMP 
BCC 
LDA 
CMP 
BCC 
SEC 


NOTYET 


* 
DOMULT 


STA 
LDA 
ADC 
STA 
LDA 
ADC 
STA 
CLD 
LDA 
CMP 
BNE 
LDA 
CMP 
BNE 
LDA 
BNE 
LDA 
BNE 
RTS 


* 


TEST 
ST1 
PEND 
HOLDPLO 
PEND+1 
HOLDPHI 


DOMULT 
STØ 


Pointer CLO/CHI 


auf NLO/NHI hochgezåhlt ist 


CHI 
NHI 
NOTYET 
CLO 
NLO 
NOTYET 


+Ø 
PCOUNT 
+>FAK 
PCOUNT+1 
MULTTAB 
+ø 

ULO 

UHI 


(PCOUNT),Y 


MULTLO, X 
ULO 
(PCOUNT),Y 
MULTMI, X 
UHI 

ULO 
MULTHI, X 
+Ø 

UHI 


PCOUNT 
PEND 
WEITER 
PCOUNT+1 
PEND+1 
WEITER 
UHI 
STEP2 
ULO 
STEP1 


* Pointer auf Fakultåtsende 
* um 1 erhöhen 


x 

STEP1 JSR 
LDA 
STA 
RTS 

* 

* Pointer um 

* 

STEP2 JSR 
JSR 
LDA 
STA 
RTS 

E? 

WEITER INC 
BNE 
INC 
JMP 


INCPEND 
ULO 
(PEND),Y 


2 erhöhen 


STEP1 
INCPEND 
UHI 
(PEND),Y 


PCOUNT 
WEl 
PCOUNT+1 
DM1 


919B: 
919E: 
91AØ: 
91A3: 
91A6: 
91A8: 
91AB: 


91AC: 
91AE: 
91B0: 
91B2: 
91B4: 
91B6: 
91B7: 
91B8: 
91BA: 
91BC: 
91BD: 
91BF: 
91CØ: 
91C2: 
91C4: 
91C6: 
91C8: 
91CA: 


91CB: 
91CE: 
91D0: 
91D3: 
91D5: 
91D8: 
91DA: 
91DD: 
91DF: 
91ER: 
91EA: 
91E7: 
91E9: 
91EC: 
91EE: 
91FØ: 
91F3: 
91F5: 
91F8: 
91F9: 
91FB: 
91FD: 
91FF: 


512 Bytes 


INCPEND INC 
BNE 
INC 
INI RTS 
* 


PEND 
IN1 
PEND+1 


W HH HHIH HHIH I IH HIHIH IH IH IH IH IH IH H HHIH % IH H H IH HH 


* 
* Ausgabe auf 


* oder Printer 


* 
PRINT JSR 
LDA 
STA 
LDA 
STA 
LDY 
JSR 
LDA 
CMP 
BCS 
JSR 
JSR 
LDA 
JSR 
JSR 
JSR 
JMP 


Tastendruck 


druck setzt 


* * HÅ 


= 
> 
H 
3 


BIT 
BPL 
BIT 
BIT 
BPL 
BIT 
WA2 RTS 
D 

DECCOUNT LDA 
BNE 
LDA 
CMP 
BNE 
PLA 


Bildschirm 


KOPF 
HOLDPLO 
PCOUNT 
HOLDPHI 
PCOUNT+1 
+Ø 

HOME 
(PCOUNT), Y 
+$19 

PP1 

PRHEX 
DECCOUNT 
(PCOUNT) , Y 
PRBYTE 
DECCOUNT 
WAIT 

PP1 


unterbricht den 


Ausdruck, erneuter Tasten- 


ihn fort 


KEY 
WA2 
STROBE 
KEY 
WA1 
STROBE 


PCOUNT 
DEC1 
PCOUNT+1 
#>FAK 
DEC1 


+Ø 
$22 


PCOUNT 


zl 
PCOUNT 
PCOUNT+1 
#9 
PCOUNT+1 


HOME 
NHI 
PRBYTE 
NLO 
PRBYTE 
+$5AØ 
COUT 
+" ! " 
COUT 
+$AØ 
COUT 
"=" 
COUT 
+39 
+$8D 
COUT 
AA 
COUT 


Kl 
+4 
$22 





Peeker 8/85 





FAKULTAET.DEMO 


100 
110 
120 
130 
140 


150 
160 
170 
180 
190 


200 
210 
220 
230 
240 
250 
260 
270 
280 
290 
300 
310 
320 
339 
349 
350 
360 
370 
380 
399 
400 
410 





REM FAKULTAET.DEMO 


PRINT CHR$ (4)"BLOAD FAKULTAET" 

POKE 1013,76: POKE 1Ø14,Ø: POKE 1015,144: 
REM 3F5: AC ØØ 90 = JMP $9000 

A = 12 * 4096 + 5 * 16: REM $CØ5Ø 

HIMEM: 9 * 4096 

HGR : TEXT 

HOME : PRINT "G)rafik "; 

IF G THEN INVERSE : PRINT "EIN"; 
: GOTO 210 

PRINT "EIN/";: INVERSE : PRINT "AUS": 
PRINT "F)akultät berechnen" 

PRINT "N)ächste Fak. berechnen" 
PRINT "A)usgabe Bildschirm" 

PRINT "E)nde" 

PRINT : 

PRINT 
IF T$ 
IF T$ 
IF T$ 
IF T$ 


: NORMAL : PRINT "/AUS" 


NORMAL 


"G" THEN G = NOT G: GOTO 180 
"F" THEN INPUT "Fakultät von: 
"N" THEN 399 

"a" THEN & P: GOTO 370 

IF T$ = "E" THEN END 

PRINT CHR$ (7);: GOTO 180 

IF G THEN POKE AO POKE A + 4,9: POKE A + 7,Ø 
& FA 

IF G THEN PRINT CHR$ (7); 
GOTO 180 

PRINT : PRINT " 

PRINT "<Taste>";: GET T$: GOTO 180 
IF G THEN POKE A,Ø: POKE A + 4,9: 

& N 

GOTO 359 


":FA: GOTO 330 


CHR$ (7);: GET T$: TEXT 


POKE A + 7,0 








ICROMINT 
LLTREFFER 


LASAR 16 
IBM 256 K, 2 x TEACBFDD, Contr. 
color Graphik, Multifunktionscard, 


Tastatur, Monitor 4.678; 


Netzteil 15 A 


LASAR ZE 


— Apple comp. 64 K + 


° 1.290; 


6502 + Z 80 A 
80 Z sw Tastatur 


AuBerdem volles Rückgaberecht innerhalb 


14 Tagen ohne Begründung. 





Apple | IBM 
@ Mehrzweckklappgehàuse It. Abb. 147,— | 147,— 
@ Schaltnetzteile Apple 5 A/IBM 15 A 115,— | 238,— 





@ Profitastatur dtsch. LASAR 2000 291,— | 291,— 
@ Interface ab 75,— | 148,— 
@ Monitor 22 Mhz incl. Fuß, bernstein 289,— | 289,— 


Kaufgarantie/Tiefstpreisgarantie/1A Qualitåt: 100 % kompatibel inkl. Systemsoftware 
Made by Micromint: Apple II 495,—, Apple lle 695,—, IBM 895,— Fertigplatinen. Tragbare 
Gehåuse für 7-Zoll/9-Zoll-Monitore 595,— DM inkl. Tastaturen. Winchester 27 MB auf 


Anfrage 1A First Class Controller bis 140 MB 935,- DM. 


Generalimporteur MICROMINT Computer GmbH 


Hochdahler StraBe 151, 4006 Erkrath 2 
Telex 8589305 mcm 


02104/33024 














a Assembler 


Ein Beispielausdruck: 


200! = 78865786736479Ø5Ø3552363213932185Ø622951359776871732 
63294742533244359449963403342920304284011984623904177212138 
91963883025764279024263710506192662495282993111346285727076 
33172373969889439224456214516642402540332918641512274282948 
53277524242407573903240321257405579568660226031904170324062 
35170085879617892222278962370389737472000000000000000000000 
0000000000000000000000000000 


1 ORG $Ø3ØØ 

2 * 

Š * Einfaches Dezimalmodus- 

4 * Additionsbeispiel/US 

5 * 

6 * 199 + 1 = 200 

7 * 
0300: Øl 99 8 SUMMAND1 HEX 0199 
0302: ØØ Øl 9 SUMMAND2 HEX ØØØl 
0304: ØØ Ou lØ SUMME HEX 0000 ; 0200 
0306: F8 11 SED 
0307: 18 12 CLC 
0308: AD Øl Ø3 13 LDA  SUMMAND1+1 
Ø3ØB: 6D 03 Ø3 14 ADC SUMMAND2+1 
Ø3ØE: 8D 05 Ø3 15 STA SUMME+1 
0311: AD ØØ Ø3 16 LDA  SUMMAND1 
Ø314: 6D Ø2 Ø3 17 ADC SUMMAND2 
0317: 8D Ø4 Ø3 18 STA SUMME 
@31A: D8 19 CLD 
Ø31B: Gë 20 RTS 
28 Bytes 


cp datentechnik 


640 KByte-Drives für den Apple //c!! 


@ 51⁄4- od. 31/2-Zoll-Format (Teac FD55/35-F) 

@ FD55-F umschaltbar auf 35/40 Track 

@ Anschluß an die externe Laufwerkbuchse 

@ Durch Einbauplatine (kein Lóten) 640 KByte im Direktzugriff 

@ Einfache Anpassung für DOS 3.3, UCSD-Pascal und PRODOS 
durch menügeführten Patch 

@ Anpassung von CP/M in Verbindung mit einer Z 80-Zusatzplatine 
in Vorbereitung 

@ anschluBfertig im Gehàuse 








DM 1090,— 
Festplatten für Apple Il (//e) 
@ 51⁄4 Zoll-Format (Slimline) 


@ Booten direkt von der Festplatte in DOS 3.3, UCSD-Pascal, 
PRODOS und CP/M 2.2 / 3.0 

@ Gemischtbetr. mit 35/40/80/160 Track-Drives 

@ Copy- und Install-Programme im Lieferumfang 

@ Umfangreiches Manual 

@ z.B. 12 MB form. incl. Netzteil u. Contr., 


anschlußfertig an Ihren Apple DM 3835,— 


640 KByte-Drives für Apple II (//e) 


@ 51⁄4- od. 31/-Zoll-Format (Teac FD55/35-F) 

@ FD55-F umschaltbar auf 40 Track (Apple kompatible) 

@ Installationssoftware für DOS 3.3, UCSD-Pascal, CP/M 2.2, 
CP/M 2.23 (60K), PRODOS, AP22, ALS CP/M+ 

@ Umfangreiches Handbuch 

@ Anschlußfertige Auslieferung incl. Contr. und 2 Drives 


@ Diskstation 55ll (2 Teac FD55-F, 1.2 MB) DM 1598,— 
@ Diskstation 35ll (2 Teac FD35-F, 1.2 MB) DM 1580,— 
80 Zeichen + 64 K für Appie He 
@ und jetzt hinsetzen . DM 158,— 





Alles für ihren Apple 


Info bei: 


ccp-datentechnik 


Herderstraße 12 — 2000 Hamburg 76 
Telefon 040/225676 











Microsoft Basic leicht 


eil 4: Die Grafik 








von Pit Capitain 





60 Peeker 8/85 





7. GRAFIK BEIM MS-BASIC 


Da beim Macintosh die Grafik eine sehr 
groBe Rolle spielt, erwartet man auch vom 
Microsoft Basic relativ komfortable und lei- 
stungsfåhige Grafik-Befehle. 

Dies ist leider nicht der Fall. Das Basic 
bietet — im Vergleich zu den Moglichkeiten 
des Mac — nur sehr wenige Grafik-Befeh- 
le. Dieser Mangel wird dadurch etwas aus- 
geglichen, daB man Zugriff auf einige im 
ROM eingebaute Routinen hat. 

Mit diesen Routinen hat man dann etwas 
mehr Moglichkeiten, Grafik zu erstellen. 
Doch ist die Lösung mit den ROM-Routi- 
nen nicht sehr elegant, zumal deren Be- 
nutzung im Handbuch nur sehr kurz be- 
schrieben wird. 


7.1. Basic-Befehle. 
7.1.1. Koordinaten 


Bei allen Grafik-Befehlen müssen Koordi- 
naten angegeben werden, die bestimmen, 
wo im Ausgabefenster gearbeitet wird. 
Diese Koordinaten kann man auf zwei Ar- 
ten angeben: 


absolut: (X,Y) bestimmt den Punkt im 
Fenster, der die angegebenen Koordina- 
ten besitzt. Die erste Zahl ist die X-, die 
zweite Zahl die Y-Koordinate. Beispiel: 
(100,25) — die linke, obere Ecke hat die 
Koordinaten (0,0). 


Bits 
876 5 432 10 





Schwarz | 000 1 000 01 

Weiß 000 0 111 10 

Rot 011 0 011 01 

Grün 101 0 101 01 

Blau ` 110 0 110 01 

Cyan 100 0 100 01 

Magenta | 010 0 010 01 

Gelb 001 0 001 01 
Normal 
Invers 
Blau additiv 
Grün für 
Rot | Monitor 
Schwarz 


Magenta > für 


Gelb subtraktiv 
Cyan Drucker 


Tabelle der Farbwerte 


Peeker 8/85 


r 


é File Edit Control 


| beispiel 1 


LOGLS PI = 4 * ATN (1) 
0 FOR [=0 TO 100 STEP 10 : A = PI * [/ 100 
O LINE (15, 50+1) - (15+1, 150), 33 
Ó LINE - STEP (5, 10+1/2), ,B 
50 CIRCLE (125-1/3, 35+1/3), 10+1/2, 33 
m60 CIRCLE (180+1, 60), 50*SIN(A), , PI/2, PIA, 2 


Pen, CIRCLE (320+1, 60), 1/2, , -PI-A, -3*PI+A 


80 Sec 


Abb. 1 


relativ: (DX,DY) bestimmt den Punkt im 
Fenster, der vom zuletzt angesprochenen 
Punkt so weit entfernt ist, wie es die Koor- 
dinaten angeben. Beispiel: angenommen, 
es wurde zuletzt der Punkt (100,25) ge- 
zeichnet. Dann bezeichnet „STEP (-20, 
30)“ den Punkt (80,55). 


7.1.2. Farben 


Bei fast allen Grafik-Befehlen kann man 
eine Farbe angeben, mit der gezeichnet 
werden soll. Jede Farbe wird durch eine 
bestimmte Nummer dargestellt. Die beim 
Macintosh vorgesehenen Farben sind mit 
ihren zugehörigen Nummern in der Tabel- 
le angegeben. 

Der Mac kann zur Zeit nur schwarz und 
weiß darstellen. Alle anderen Farben wer- 
den als schwarz interpretiert (vgl. dazu die 
Spalte „Bit 0“ in der Tabelle). 

Falls man bei den Befehlen keine Farbe 
angibt, setzt das Basic als Defaultwert 
schwarz ein. 


7.1.3. Einzelne Punkte 


PSET Koord., Farbe und 

PRESET Koord., Farbe — zeichnen den 
angegebenen Punkt in einer bestimmten 
Farbe. Die beiden Befehle unterscheiden 
sich nur dann, wenn man keine Farbe an- 
gibt. PSET benutzt dann die sogenannte 





„Vordergrund“ Farbe (normalerweise 
schwarz), dagegen benutzt PRESET die 
„Hintergrund“ -Farbe (normalerweise 
weiß). 


7.1.4. Linien und Flächen 


Mit dem Befehl „LINE“ (nicht zu verwech- 
seln mit der gleichnamigen ROM-Routine 
(!), s.u.) kann man Linien und Rechtecke 
zeichnen: 


LINE Anf - End, Farbe — zeichnet eine 
Linie von der Anfangs- zur End-Koordina- 
te in der angegebenen Farbe. 

Man kann die erste Koordinate weglassen; 
dann beginnt die Linie beim zuletzt ange- 
sprochenen Punkt. 

Wenn keine Farbe angegeben wird, so 
wird in schwarz gezeichnet. Der Befehl: 
LINE (100,25) - STEP (-20,30) 

zeichnet also eine schwarze Linie vom 
Punkt (100,25) zum Punkt (80,55). 


An den „LINE“-Befehl kann man noch 
zwei Zusätze anhängen: 


, B — (Box) zeichnet ein Rechteck, bei dem 
zwei gegenüberliegende Ecken durch die 
angegebenen Koordinaten bestimmt wer- 
den. Es wird nur der Rahmen des Recht- 
ecks in der angegebenen Farbe gezeich- 
net, das Innere bleibt unverändert. 


61 





, BF — (Box Fill) zeichnet ebenfalls ein 
Rechteck, das aber mit der angegebenen 
Farbe ausgefüllt ist. 

Beispiele zu diesem Befehl sieht man in 
Abb. 1. 


Mit dem nächsten Befehl können Kreise, 
Ellipsen und Ausschnitte aus diesen bei- 
den Flächen gezeichnet werden: 


CIRCLE Mitte, Radius, Farbe — zeichnet 
einen Kreis mit dem angegebenen Mittel- 
punkt und Radius. Der Radius wird in Pi- 
xeln angegeben (1 Pixel = 1 Grafikpunkt). 
Zur Farbe gilt das bisher Gesagte. Es wird 
wiederum nur der Rand des Kreises mit 
dieser Farbe gezeichnet, das Innere bleibt 
unverändert. 


Auch an diesen Befehl kann man Zusätze 
anhängen: 


, Anf, End — bestimmt einen Ausschnitt 
des Kreises, der gezeichnet werden soll. 
Der Kreis wird vom Winkel Anf bis zum 
Winkel End gezeichnet. Die Winkel wer- 
den im Bogenmaß angegeben, wobei der 
Winkel O nach rechts zeigt, der Winkel PI/2 
nach unten. 

Falls einer der beiden Winkel negativ ist, 
so wird die Randlinie des Kreisausschnitts 
mit dem Mittelpunkt des Kreises verbun- 
den, so daß eine Art „Kuchenstück“ ent- 
steht. Von den Winkeln wird der Betrag 
genommen. (Dies entspricht also nicht der 
Addition von 2 x PI!) 

Leider wird keine Linie zum Mittelpunkt 
gezogen, wie man vielleicht annehmen 
könnte, sondern es wird ein Kreisaus- 
schnitt von 2 Grad gezeichnet. Dieser ist 
dann natürlich außen breiter als innen, wo 
er fast gar nicht zu sehen ist. 

Beispiele zu diesem Befehl sieht man 
ebenfalls in Abb. 1. 


Es gibt noch einen weiteren Parameter, 
den man anfügen kann: 


, Quotient — gibt das Verhältnis vom Ra- 
dius in Y-Richtung zum Radius in X-Rich- 
tung an. Damit ist es möglich, Ellipsen zu 
zeichnen. 

Der im Befehl angegebene Radius ist im- 
mer der größere von den beiden Radien. 
Falls der Quotient kleiner als 1 ist, ist also 
der Radius in X-Richtung angegeben, an- 
sonsten der in Y-Richtung. 

Beispiele dazu sind ebenfalls in der Abb. 1 
zu sehen. 


62 


Bei der Verwendung der zusätzlichen Pa- 
rameter ist zu beachten, daß durch Kom- 
mas angegeben werden muß, um welchen 
Parameter es sich handelt. Soll zum Bei- 
spiel nur der Quotient angegeben werden, 
so lautet der Befehl etwa: 

CIRCLE (50,50), 30, , ,, 2 


7.1.5 Sonstige Befehle 


Es gibt noch zwei weitere Basic-Befehle, 
die es erlauben, einen Teil des Bild- 
schirms (genauer: des Ausgabefensters) 
in eine Array-Variable einzulesen und spä- 
ter wieder auszugeben. Diese Befehle 
heißen „GET“ und „PUT“, sind aber nicht 
mit denselben Befehlen für die Ein-/Aus- 
gabe zu verwechseln. 


GET Anf - End, Array - liest den Inhalt 
des angegebenen Rechtecks in die Array- 
Variable ein. Dabei muß beachtet werden, 
daß das Array groß genug dimensioniert 
wurde, um auch alle Bits speichern zu 
können. 

Jede Zeile des Bildes wird in Vielfachen 
von 16 Bits gespeichert. Falls das Bild 
etwa 21 Pixel breit ist, werden für jede 
Zeile 32 Bits oder 4 Bytes benötigt. 

Damit läßt sich die Größe eines Bildes 
berechnen. Sei (X1,Y1) die linke, obere 
und (X2,Y2) die rechte, untere Ecke des 
Rechtecks, so muß das Array mindestens 
4+ (Y2-Y1 + 1) + 2 * INT ((X2 -X1 + 16) 


/ 16) Bytes lang sein. Der Ausdruck ab 
„2 * INT" gibt an, wieviele Bytes für eine 
Zeile benötigt werden. Dieser Wert wird 
mit der Zahl der Zeilen multipliziert. Die 
„4“ am Anfang des Ausdrucks kommt da- 
her, daB neben dem Bild auch dessen 
Dimensionen (Breite und Höhe) gespei- 
chert werden, die je 2 Bytes benötigen. 
Fur den Befehl: 

GET (80,25) - (100,55), A% 

muB A% mindestens 128 Bytes lang sein. 
Wieviele Elemente A% enthalten muB, 
sieht man, wenn man sich nochmals die 
Größen der einzelnen Zahlen-Typen (vgl. 
Teil 1, Peeker 2/84) vor Augen hält: 

2 Bytes für ganze Zahlen, 

4 Bytes für einfach genaue, 

8 Bytes für doppelt genaue rationale 
Zahlen. 

Das Array A% (ganze Zahlen) muß also 
mindestens 64 Elemente enthalten, was 
durch „DIM A% (63)“ erreicht wird. 


PUT Anf - End, Array, Modus - gibt das 
im Array gespeicherte Bild wieder auf dem 
Bildschirm an der Koordinate Anf aus. 
(„Anf“ ist die Koordinate der linken, obe- 
ren Ecke). 

Wenn die Koordinate der rechten, unteren 
Ecke End nicht angegeben ist, so wird das 
Bild mit den ursprünglichen Dimensionen 
gezeichnet (s.o.). 

Falls aber die zweite Koordinate angege- 
ben ist, wird das Bild so gedehnt oder 


| | Sg | | Beispiel 2 | 


ak Hall 





0 LINE (3, 0) x (36, 33), D B 
O GET 14, 1) - 135, 32), S$ 





nf 


00 PUT (40+3*1, 60-1/2) - (40+4*1, 60+1*3/2), SÆ 





Peeker 8/85 





gestaucht, daB es in das angegebene 
Rechteck hineinpaßt! 

Der Modus, den man hinter dem Befehl 
angeben kann, bestimmt die Art, wie das 
Bild gezeichnet werden soll. Es kann eines 
der folgenden Worte angegeben werden: 
PSET kopiert das Bild normal auf den Bild- 
schirm. 

PRESET kopiert das Inverse des Bildes 
auf den Bildschirm. 

AND, OR oder XOR verknüpfen das Bild 
bitweise mit dem Bildschirminhalt. 


Falls kein Modus angegeben ist, wird 
„XOR“ angenommen. Mit diesem Modus 
kann ein gezeichnetes Bild wieder ge- 
löscht werden, wobei der Hintergrund un- 
verändert bleibt. 

Beispiele für „GET“ und „PUT“ sieht man 
in Abb. 2. 


7.2. ROM-Routinen 
7.2.1. Aufruf 


Die im ROM des Macintosh vorhandenen 
Zeichenroutinen werden wie alle Program- 
me in Maschinensprache mit dem Befehl 
„CALL“ aufgerufen (vgl. Teil 2, Peeker 1/ 
2-85). An die meisten Routinen müssen 
Parameter wie z.B. die Koordinaten eines 
Rechtecks übergeben werden. Der Aufruf 
mit Parametern sieht allgemein so aus: 


CALL Name (Par1, Par2, ...) 


Die Namen der Routinen sind reservierte 
Wörter, die man wie die normalen Basic- 
Befehle nicht als Variablennamen benut- 
zen darf. 


7.2.2. Parameter 


Da das ROM des Macintosh nichts Uber 
Basic-Variablen und deren Aufbau weiB, 
mussen die Parameter der einzelnen Auf- 
rufe vom Basic aus simuliert werden, was 
in Basic weitaus weniger elegant erscheint 
als in Maschinensprache oder in Pascal. 


Die von MS-Basic aus erreichbaren Zei- 
chenroutinen benötigen verschiedene Ar- 
ten von Parametern: 


Word (2 Bytes) gibt ganze Zahlen an (16 
Bits, vorzeichenbehaftet). Damit werden 
z.B. einzelne Koordinaten dargestellt. 
Beim Aufruf braucht man hier nur eine 
ganze Zahl einzusetzen. 

Point (2 Words = 4 Bytes) gibt die Koordi- 
naten eines Punktes an. 


Peeker 8/85 


Beim Aufruf ist es am einfachsten, wenn 
man nicht einen Parameter mit 4 Bytes 
angibt, sondern zwei Parameter mit je 2 
Bytes. In diesem Fall kann man die Koordi- 
naten mittels zweier ganzer Zahlen (z.B. 
»(X%, Y%)“) angeben. 


Alle sonstigen Parameterarten benötigen 
mehr als 4 Bytes. Sie werden nicht direkt 
an das Maschinenprogramm Ubergeben, 
sondern nur ihre Adresse. Diese besteht 
aus 4 Bytes. 

Falls ein Parameter von der ROM-Routine 
an das Basic-Programm zurückgegeben 
wird (z.B. die Position des „Pen“, s.u.), so 
wird ebenfalls nur die Adresse des Para- 
meters übergeben, egal, ob der Parameter 
länger als 4 Bytes ist oder nicht. 

Wer das jetzt nicht so ganz verstanden hat, 
sieht sich am besten die Beispiele zu den 
einzelnen Routinen in den Abb. 2 bis 4 
an. 


Es gibt folgende Parameter, die länger als 
4 Bytes sind: 


Rect (4 Words = 8 Bytes) gibt die Koordi- 
naten eines Rechtecks an in der Reihen- 
folge oberer, linker, unterer und rechter 
Rand. 

Beim Aufruf wird folgendes übergeben: 
„VARPTR (R%(0))", wobei R% ein Array 
mit mindestens 4 Elementen (ganzen Zah- 
len) ist. Die Funktion ,VARPTR" liefert 
gerade die Adresse der Array-Elemente. 
Pattern (8 Bytes) gibt ein Muster an, mit 
dem Flächen gefüllt werden können (wie 
z.B. bei „MacPaint“ die Muster in der un- 
teren Zeile). 

Ein solches Muster besteht aus 8 * 8 
Pixeln, benötigt also 8 Bytes. Das erste 
Byte entspricht dabei der obersten Zeile 
des Musters, das zweite Byte der zweiten 
Zeile, usw. In jeder Zeile entspricht das 
Pixel ganz links dem höchstwertigen Bit im 
Byte oder dem Zahlenwert 128. Das Pixel 
ganz rechts entspricht demnach dem nie- 
derwertigsten Bit im Byte oder dem Zah- 
lenwert 1. 

Der Parameter beim Aufruf lautet dann 
etwa „VARPTR (P%(0))“, wobei P% wie- 
der ein Array mit mindestens 4 Elementen 
sein muß. 

Cursor (68 Bytes) bestimmt die Gestalt 
des Cursors, also das Bild, das mit der 
Maus bewegt wird (z.B. der Pfeil). 

Die ersten 32 Bytes stellen die sogenann- 
ten „Cursordaten“ dar. Dies ist ein Recht- 
eck aus 16 * 16 Pixeln, das das Bild des 
Cursors angibt. 

Doch werden normalerweise nicht alle die- 
se Pixel gezeichnet, da sonst der Cursor 





Mecki s4 


immer rechteckig wäre. Welche Pixel ge- 
zeichnet werden sollen, bestimmt die 
„Cursormaske“, die aus den nächsten 32 
Bytes besteht. Es handelt sich hier wieder 
um ein 16*16-Rechteck. Wenn ein Bit der 
Maske auf ,1" gesetzt ist, so wird das 
entsprechende Bit der Cursordaten auf 
dem Bildschirm gezeichnet, ansonsten 
bleibt der Hintergrund des Cursors sicht- 
bar. Beim normalen Pfeil hat die Maske 
ebenfalls Pfeilform, ist aber um ein Pixel 
breiter als die Cursordaten. Dies ergibt 
einen weißen Rand um den Pfeil. 

Mit dem Cursor will man nun nicht eine 
Fläche von 16 * 16 Pixeln auswählen, 
sondern einen ganz bestimmten Punkt. 
Beim Pfeil ist dies z.B. die Pfeilspitze, bei 
einem kreuzförmigen Cursor die Mitte des 
Kreuzes. Dieser Punkt (auch „HotSpot“ 
genannt) wird durch die letzten 4 Bytes 
bestimmt. Diese 4 Bytes haben den Auf- 
bau von „Point“ (s.o.). Ein Wert von (0,0) 
steht für die linke, obere Ecke, (15,15) für 
die rechte, untere Ecke. Die erste Zahl ist 
die Y-, die zweite die X-Koordinate. 

Beim Aufruf wird folgendes übergeben: 
„VARPTR (C%(0))“, wobei C% ein Array 
mit mindestens 34 Elementen sein muß. 


Nach diesen sehr theoretischen Ausfüh- 
rungen kommen wir nun zu den einzelnen 
Routinen und damit auch zu Beispielen, an 
denen das vorher Gesagte mit etwas mehr 
Leben erfüllt werden soll. 


7.2.3. Cursor-Routinen 


CALL HideCursor — diese Routine hat 
keine Parameter. Bei jedem Aufruf der 
Routine wird eine Variable des Betriebssy- 
stems, der sogenannte „CursorLevel”, 
um 1 erniedrigt. 

Der „CursorLevel“ ist eine vorzeichenbe- 
haftete 16-Bit-Zahl. Wenn diese Zahl ne- 
gativ ist, ist der Cursor nicht sichtbar. 

Mit einem Aufruf von ,HideCursor" er- 
reicht man also, daß der Cursor nicht mehr 
zu sehen ist. (Dies kommt z.B. beim Boo- 
ten des Mac vor, wenn das Fenster mit der 
Meldung „Willkommen zu Macintosh” er- 
scheint.) 

CALL ShowCursor — auch diese Routine 
hat keine Parameter. Sie ist das Gegen- 
stück zur „HideCursor“-Routine, denn sie 
erhöht die Variable „CursorLevel“ um 1. 
Falls dadurch die Variable positiv (also grö- 
Ber oder gleich 0) wird, dann wird der 
Cursor wieder sichtbar. Zu beachten ist 
dabei, daß der „CursorLevel“ vom Be- 
triebssystem her nie größer als Null wird. 
So hat z.B. die Folge: 


63 





CALL ShowCursor 

CALL ShowCursor 

CALL ShowCursor 

CALL HideCursor 

die Wirkung, daß der CursorLevel auf -1 
steht und der Cursor also nicht sichtbar ist. 
CALL ObscureCursor — ebenfalls eine 
Routine ohne Parameter. Sie macht fol- 
gendes: 

Zunåchst ruft sie ,HideCursor" auf, das 
heißt, daß der Cursor verschwindet. An- 
schließend wird in einer bestimmten Varia- 
blen des Betriebssystems notiert, daß der 
Cursor mit „ObscureCursor“ versteckt 
wurde. 

Sobald der Benutzer danach die Maus und 
damit den Cursor bewegt, wird sofort die 
Routine „ShowCursor“ aufgerufen; der 
Cursor wird wieder sichtbar. 

Die Aufgabe von „ObscureCursor“ ist al- 
so, den Cursor solange verschwinden zu 
lassen, bis die Maus bewegt wird. Auch 
diese Routine wird manchmal beim Mac 
verwendet, z.B. verschwindet beim Micro- 
soft Basic der Pfeil, sobald eine Taste ge- 
drückt wird, wenn gerade kein Programm 
läuft. Der Pfeil wird allerdings sofort wieder 
sichtbar, wenn man die Maus bewegt. 
CALL InitCursor — diese Routine hat kei- 
ne Parameter. Sie bewirkt, daß der Cursor 
die gewohnte Form eines Pfeils bekommt, 
der nach links oben zeigt. Außerdem wird 
der „CursorLevel“ (s.o.) auf 0 gesetzt, so 
daß der Cursor sichtbar wird. 

CALL SetCursor (VARPTR (C%(0))) — 
diese Routine verändert die Form des Cur- 
sors so, wie im Parameter C% angege- 
ben. Der Aufbau und die Länge von C% 
wurde weiter oben schon erklärt. 

Ein Beispiel zu dieser Routine ist in Abb. 3 
gegeben. Das Programm liest die neue 
Gestalt des Cursors aus „DATA“-Zeilen 
ein und verändert den Cursor entspre- 
chend. Der neue Cursor ist im Bild in der 
Ecke des großen Quadrats zu sehen. 


7.2.4. Textausgabe 


Es gibt 4 Routinen, mit denen die Art, wie 
Text ausgegeben wird, veråndert werden 
kann. Da in jedem geöffneten Fenster eine 
andere Art der Textausgabe möglich ist, 
wird mit diesen Routinen nur die Ausgabe- 
art des aktiven Fensters veråndert. Bei 
einem laufenden Basic-Programm ist dies 
das Ausgabefenster. Die anderen Fenster 
(z.B. das Listfenster) werden dadurch 
nicht verändert. 


CALL TextSize (SIZE) — verändert die 


Größe der Buchstaben. Jeder Text, der 
nach diesem Aufruf ausgegeben wird, hat 


64 


é File Edit Control 




















VEER, 

OOOOOD Be 
wë DOM 
mDLDDURBBSUDDDE 


Seiler BODODM 
Be 2 


et 


gt EEE 
"ee 










59 REM 










øse 1. 


Fed EE 


Abb. 3 


die Größe SIZE. Diese Routine wird z.B. 
dann aufgerufen, wenn man etwa in 
» MacWrite" eine andere Zeichengröße 
wählt. 

CALL TextFont (FONT) — wählt einen 
neuen Zeichensatz aus. FONT ist eine 
Nummer, die den Zeichensatz bestimmt. 
Es gibt die folgenden Nummern: 


0 — System-Zeichensatz 

1 — normaler Basic-Zeichensatz 
2 — New York 

3 — Geneva 

4 — Monaco (nicht proportional!) 
5 — Venice 


6 — London 
7 — Athens 
8 — San Francisco 
9 — Toronto 


CALL TextFace (FACE) — bestimmt die 
Art, wie die einzelnen Buchstaben ausge- 
geben werden. FACE ist dabei eine Zahl, 
deren einzelne Bits die folgende Bedeu- 
tung haben: 


Bit 0 (01) — Bold (fett) 

Bit 1 (02) — Italic (kursiv) 

Bit 2 (04) — Underline (unterstrichen) 
Bit 3 (08) — Outline (umrahmt) 

Bit 4 (16) — Shadow (mit Schatten) 
Bit 5 (32) — Condense (Schmalschrift) 
Bit 6 (64) — Extend (breit) 


60 D ATA EE 1, l, L en 
61 DATA 100001 
62 DATA — — 1000000001 


— 3 DATA __ 100000060001 _ 


10 DIM 24135) : CLS : LINE (47, 47)- (163, 163). B 

20 FOR 1=0 TO 15 : D=0 : M=0 : F=- 1 

30 FOR ]=0 TO 15 : READ A$ : DX=-F*(A $=" ]' ) 
31 MX=-F*(A $: "_") : D=2*D+DX : M=22M+MX 
32 IF MX=0 THEN 40 ELSE X=50+7*] : Y=50+7"] 
33 IF DX=0 THEN LINE (X,Y)-STEP(S,51,E 

34 IF DX<0 THEN LINE (X,Y)-STEP(5,5) EF 

40 F=AES(F) : NEXT : CÆ(I =D : CSC, 16)=M 

50 NEXT : READ CZ(32) C£(33) 

51 CALL SETCURSOR (VARPTR(CZ(0)1)) : END 















ESG VT 





A 


DAMM Addi 


Die einzelnen Bits können wahlweise 
kombiniert werden (wobei nicht alle Kom- 
binationen gut zu entziffern sind). Wenn 
z.B. FACE = 70 ist, so wird nach dem 
Aufruf jeder Text in breiter Schrift, unter- 
strichen und zudem kursiv ausgegeben. 
Auch diese Wahlmöglichkeiten kennt man 
z.B. von , MacWrite". 

CALL TextMode (MODE) — bestimmt die 
Art, wie der auszugebende Text mit dem 
Bildschirminhalt kombiniert wird. Es gibt 
die folgenden Werte: 


0 — Copy (direkte Kopie) 

1 - Or (normale Ausgabeart) 
2 — Xor (s.o.) 

3 — Bic (s.u.) 


Die Ausgabeart „Bic“ bedeutet, daß die 
Buchstaben in weiß gezeichnet werden. 
Welche Wirkung diese einzelnen Arten bei 
unterschiedlichem Hintergrund haben, 
zeigt die Abb. 4. 


7.2.5 Der Pen 


Der sogenannte „Pen“ ist der eigentliche 
Zeichenstift des Macintosh. Jedes Fenster 
besitzt seinen eigenen Stift. Dieser Stift 
hat eine ganze Reihe von Eigenschaften: 


PnLoc gibt die Position des Stifts im je- 
weiligen Fenster an. Dies ist gleichzeitig 
die Position, an der der nächste Text aus- 
gegeben wird. 


Peeker 8/85 








r 


é File Edit Control 


Beispiel 4 E SE SV 


ID mieg 11 WI i. 
å REN EEE EBENEN Re Ye 
TE 93.370 vie man sehen I 


20 P%(1)=85*258 : NEXT 

“ 30 CALL BACKPAT (VARPTR (P%(0))) : CLS 
_40 LINE (200,0)-(300,100), 33, BF 

50 LINE (0,0)-(100,100), 30, BF 

160 CALL FILLRECT (VARPTR (R%(0)), VARPTR (P%(0))) 
70 PRINT : FOR I=0 TO 3 : CALL TEXTMODE (1) 


Abb. 4 


PnSize gibt die Größe des Stifts an. Der 
Stift hat eine rechteckige Form, deren Hö- 
he und Breite verändert werden kann. 
„PnLoc“ gibt dabei die Position der linken, 
oberen Ecke des Stifts an. 

PnMode gibt die Art an, wie die „Farbe“ 
des Stifts mit dem Bildschirm kombiniert 
werden soll (vgl. oben die Routine „Text- 
Mode“). 

PnPat stellt die „Farbe“ des Stifts dar. Es 
handelt sich um ein „Pattern“ (Muster aus 
8 * 8 Pixeln). 

PnVis gibt an, ob der Stift sichtbar ist oder 
nicht. Falls hier ein negativer Wert vorhan- 
den ist, dann ist der Stift nicht sichtbar (vgl. 
„CursorLevel“ weiter oben). Dies hat die 
Wirkung, daß alles, was mit dem Stift ge- 
zeichnet wird, nicht sichtbar ist. 


Alle diese Eigenschaften können mit den 
nachfolgenden Routinen verändert 
werden: 


CALL HidePen - erniedrigt „PnVis“ um 1. 
Dadurch wird der Pen unsichtbar. 

CALL ShowPen - erhöht „PnVis“ wieder 
um 1. Dies ist also das Gegenstück zu 
„HidePen“. 

Im Gegensatz zu „CursorLevel” kann 
„PnVis“ auch größer als Null werden, so 
daß man hier aufpassen muß, daß man 
von beiden Routinen dieselbe Anzahl ver- 
wendet. 


Peeker 8/85 





CALL GetPen (VARPTR (L%(0))) — gibt 
die momentane Position des Zeichenstifts 
in die Variable L% zurück. L% ist dabei ein 
Array mit mindestens zwei Elementen, 
wobei L%(0) die Y-Koordinate und L% (1) 
die X-Koordinate ist. 


Dies ist die einzige ROM-Routine, die eine 
Information an das Basic zurückgibt. Des- 
halb muß auch hier die Funktion 
, VARPTR" verwendet werden, obwohl 
der Parameter selbst vom Typ „Point“, 
also nur 4 Bytes lang ist. 


CALL PenSize (B, H) — bewirkt, daß der 
Stift ein Rechteck mit der Breite B und 
Höhe H wird. Beide Parameter haben die 
Einheit Pixel. 


CALL PenMode (MODE) — setzt „Pn- 
Mode“ auf den Wert von MODE. Die mög- 
lichen Werte sieht man in der obigen Ta- 
belle, die bei „TextMode“ angegeben ist. 
ACHTUNG: Bei „PenMode“ muß zu je- 
dem dieser Werte noch 8 addiert werden! 
MODE liegt demnach im Bereich 8 bis 11, 
wobei z.B. 10 die Bedeutung „Xor“ hat 
(10 = 8 + 2). 


(Fur die interessierten Leser: dies hångt 
damit zusammen, daß mit dem Pen kein 
Text ausgegeben wird, sondern ein Mu- 
ster, nämlich „PnPat“. Bei der Ausgabe 
von Text muß MODE eine Zahl kleiner als 
8 sein, bei der Ausgabe eines Musters 
dagegen größer als 7.) 


æ MECkI 44 


CALL PenPat (VARPTR (P%(0))) — verån- 
dert „PnPat“, also das Muster des Stifts, 
zu dem Muster, das in P% angegeben ist. 
P% ist vom Typ „Pattern“, der weiter oben 
erklärt wurde. 

CALL PenNormal - bringt den Stift wieder 
in seinen „normalen“ Zustand. Dabei wer- 
den die folgenden Aktionen ausgeführt: 
„PnSize“ wird auf (1,1) gesetzt (1 Pixel 
breit, 1 Pixel hoch). 

„PnMode“ wird auf „Copy“, also auf 8 
gesetzt. 

„PnPat“ wird auf schwarz gesetzt, d.h. 
daß alle 8 * 8 Bits auf 1 sind. 

Die beiden anderen Eigenschaften des 
Stifts, „PnLoc“ und „PnVis“, bleiben un- 
verändert. 

CALL MoveTo (X, Y) — bewegt den Stift 
ohne zu zeichnen zu dem Punkt mit den 
angegebenen (absoluten) Koordinaten. 
CALL Move (DeltaX, DeltaY) — bewegt 
den Stift ohne zu zeichnen horizontal um 
DeltaX und vertikal um DeltaY weiter (rela- 
tive Koordinaten). 

CALL LineTo (X, Y) — wie „MoveTo”, nur 
wird diesmal bei der Bewegung eine Linie 
gezeichnet. Dabei werden nun die Eigen- 
schaften des Stifts (Muster, Größe, usw.) 
sichtbar. 

CALL Line (DeltaX, DeltaY) — wie „Line- 
To“, nur sind die Koordinaten relativ ange- 
geben. 

Diese Routine hat leider denselben Na- 
men wie der Basic-Befehl „LINE“ (s.o.). 


Beispiele zu diesen Routinen sieht man in 
der Abb. 5. 


7.2.6. Der Hintergrund 


Es gibt eine Routine, mit der man das 
Muster verändern kann, mit dem norma- 
lerweise der Hintergrund ausgefüllt wird. 


CALL BackPat (VARPTR (P%(0))) — be- 
wirkt, daß fortan der Hintergrund mit dem 
Muster in P% (Pattern) ausgefüllt wird. 
Dieses Muster wird z.B. dann verwendet, 
wenn der Basic-Befehl „CLS“ ausgeführt 
wird. Dadurch kann man das ganze Aus- 
gabefenster mit einem eigenen Muster 
ausfüllen (siehe Abb. 4). 


7.2.7. Flächen zeichnen 
Es gibt verschiedene Flächen, die man mit 
den ROM-Routinen zeichnen kann: 


Rect ist ein ganz normales Rechteck. 
Zur Beschreibung dieser Fläche genügt 
ein Parameter vom Typ „Rect“ (s.o.). 


65 





Oval ist eine Ellipse. Sie wird durch ein 
Rechteck definiert, dessen Höhe und Brei- 
te gerade die Höhe und Breite der Ellipse 
angeben. 

Zur Beschreibung dieser Fläche genügt 
also ebenfalls ein Parameter vom Typ 
„Rect“. 

RoundRect ist ein Rechteck, bei dem die 
Ecken abgerundet sind (z.B. der gesamte 
Schreibtisch des Mac). Die runden Be- 
grenzungslinien in den Ecken sind je ein 
Viertel einer Ellipse. 

Um diese Fläche zu beschreiben reicht ein 
Parameter vom Typ „Rect“ nicht aus. Zu- 
sätzlich benötigt man noch die Breite und 
die Höhe der Ellipse, die die abgerundeten 
Ecken definieren. 

Arc ist ein Ausschnitt einer Ellipse, der 
durch zwei Winkel gegeben ist (aber an- 
ders als bei „CIRCLE“!). 

Man benötigt zur Beschreibung dieser Flä- 
che einen Parameter vom Typ „Rect“ (de- 
finiert die Ellipse) und die zwei Winkel. 
Diese Winkel sind hier im Gradmaß ange- 
geben. Ein Winkel von O Grad zeigt nach 
oben, einer von 90 Grad nach rechts. Der 
erste Winkel ist der Anfangswinkel, wäh- 
rend der zweite Winkel angibt, wie weit 
und in welche Richtung vom Anfangswin- 
kel aus gezeichnet werden soll. Beispiele: 
90 Grad, 180 Grad — zeichnet den Aus- 
schnitt von 90 bis 270 Grad. 

90 Grad, -180 Grad — zeichnet den Aus- 
schnitt von 90 bis -90 Grad. 


Jede dieser 4 Flächen kann nun auf ver- 
schiedene Arten gezeichnet werden: 


Frame — die Fläche wird mit dem „Pen“ 
umrahmt. Dabei kommen alle Eigenschaf- 
ten des Pen zum Tragen, also die Größe, 
das Muster, usw. 

Der Pen wird dabei so geschickt geführt, 
daß nur innerhalb der angegebenen Flä- 
che gezeichnet wird. Dies ist deshalb nicht 
trivial, weil der Pen ja ein Rechteck mit 
veränderlicher Größe ist. 


é File Edit Control 


Beispiel 5 


10 Tð FOR 1=0 T0 3 Ka `: READ ra? 


20 NEXT : DATA -3085, 12336, 16191, 0 
30 CLS : CALL PENSIZE (5,10) : CALL MOVETO (10,10) 
140 CALL LINE (0,40) : CALL LINE (40,0) 


50 R&(0)=10 : RÆ(2)=60 


aa: : 
| TT | 


60 FOR I=0 TO 360 STEP 45 : RÆ(1)=I : R%(3)=70+1 

170 CALL FRAMEARC (VARPTR (R%(0)), 0,1) 

80 NEXT : R%(0)=80 : R%(2)=200 : RÆ(3)=470 

90 CALL FILLRECT (VARPTR (R%(0)), VARPTR (P&(0))) 
100 td SE on — 


Paint — die Fläche wird in der sogenann- 
ten „Vordergrundfarbe“ gezeichnet (nor- 
malerweise in schwarz). 

Erase — zeichnet die Fläche in der „Hin- 
tergrundfarbe“, normalerweise in weiß. 
Dadurch wird diese Fläche praktisch ge- 
löscht. 

Invert — wandelt alle Pixel in der Fläche in 
das logische Gegenteil um: aus weiß wird 
schwarz und umgekehrt. 

Fill — füllt die Fläche mit einem bestimm- 
ten Muster (Pattern, s.o.). Dieses Muster 
muß man bei dem Befehl zusätzlich an- 
geben. 


Für jede der 4 Flächen stehen also 5 ver- 
schiedene Zeichenmöglichkeiten zur Ver- 
fügung, was eine Zahl von 20 verschiede- 
nen Routinen ergibt. 





Die Namen dieser Routinen setzen sich 
wie folgt zusammen: Das erste Teilwort 
gibt die Zeichenart an (z.B. „Erase“), das 
zweite Teilwort die Form der Fläche (z.B. 
„Oval“). Der Name dieser Routine lautet 
dann „EraseOval“. 

Beispiele zu den möglichen Aufrufen mit 
Parametern sieht man in den Abb.4 und 5 
und in den nachfolgenden Beispielen: 
CALL PaintRect (VARPTR (R%(0))) 

CALL FillOval (VARPTR (R%(0)), VARPTR 
(P% (0))) 

CALL InvertRoundRect (VARPTR (R% (0)), 
B, H) 

CALL EraseArc (VARPTR (R%(0)), A, W) 
CALL FrameRect (VARPTR (R%(0))) 
Dabei sei R% ein Array mit 4 Elementen 
(Rect), P% ebenfalls ein Array mit 4 Ele- 
menten (Pattern), B und H die Breite und 
Höhe einer Ellipse, A und W zwei Winkel. 


Computer-unterstiitztes Lernen für Beruf, Weiterbildung, Schule NEU: Rücknahme von Lern- 


LK. - 
N INTUS SOFTVVARE 


Kaiserstraße 21, 7890 Waldshut, Telefon 07751/7920 


66 


@ Programme für Apple lle/c/teilw. +. 
@ Demo-Diskette mit 8 Programmen 
und 7 Denkspielen DM 10,- 
@ Gesamtkatalog mit über 160 Titeln 
kostenlos. 


programmen (wenn Sie den 
Stoff intus haben) zu 50 % 
des Kaufpreises bei Kauf 

eines anderen intus-Lern- 
programmes. 





Peeker 8/85 






von Ralf Knoke 


Die abgedruckte Programmsammlung 
GRAFIK.DEMOS soll ein Beispiel dafür 
sein, wie man auch als Anfänger mit kur- 
zen Programmschritten schöne Grafiken 
im HGR-Bereich auf dem Apple Il erzeu- 
gen kann. Sie soll zur Nachahmung anre- 
gen. Es werden verschiedene Grafiken, 
sowohl zwei- wie auch dreidimensional, 
gezeigt. Im Listing sind die einzelnen Teile 
durch entsprechende REMs voneinander 
getrennt. 


Vor den eigentlichen Zeichenanweisun- 
gen (HPLOTs) werden meistens die Koor- 
dinaten der Endpunkte festgelegt. Dies er- 
scheint immer dann sinnvoll, wenn Punkte 
mehrmals angesteuert werden müssen. 
Das war allerdings nicht überall der Fall, 
weshalb manche Punkte direkt in der 
HPLOT-Anweisung angegeben werden. 
Hierzu ist für alle, die es selbst versuchen 
wollen, noch zu sagen, daß die Punkte 


Grafik-Demonstrationen 


natürlich nicht willkürlich gewählt worden 
sind. Man muß ihre Lage mit dem Compu- 
ter ausprobieren oder eine Skizze auf ei- 
nem karierten DIN-A4-Blatt anfertigen. Ei- 
ne Kästchenlinie entspricht dabei 5 
HPLOT-Punkten. Das hört sich schwieri- 
ger an, als es ist. Nach einiger Zeit hat man 
jedoch „den Bogen raus”. 


Arbeitet man im 80-Zeichenmodus, so 
sollte man in Zeile 1720 die Variable X auf 
6 vergrößern und in den HTAB-Anweisun- 
gen die addierten Zahlen verdoppeln, z.B. 
5 auf 10, 30 auf 60 usw. Dadurch wird die 
Beschriftung eindeutiger. 


Mit den Schleifen, die z.B. in den Zeilen 
1850-1920 vorkommen, erreicht man, daß 
Linien im 3-D-Bereich, die eigentlich nicht 
sichtbar sind, nur unterbrochen dargestellt 
werden. Dies ist einfach, wenn die Linien 
waagerecht, senkrecht oder im 45 Grad 
Winkel stehen, sonst gibt es Schwierigkei- 


Applepreise = Mondpreise? 


Die sog. Preisbindung der zweiten Hand 
(= vertikale Preisbindung = Festlegung 
der für den Einzelhandel verbindlichen 
Endabnehmerpreise durch den Produzen- 
ten) war früher für Markenartikel schlecht- 
hin zulässig. Seit 1974 können nur noch 
Verlagserzeugnisse der vertikalen Preis- 
bindung unterworfen werden, während für 
Markenartikel bestenfalls die sog. unver- 
bindliche Preisempfehlung zulässig ist. 
Als Mondpreis definiert man den „Miß- 
brauch von vertikalen Preisempfehlungen, 
indem die empfohlenen Bruttopreise zu 
hoch festgesetzt werden, um dem Einzel- 
handel die Unterbietung auch bei üblicher 
Kalkulation zu ermöglichen und damit dem 
Kunden besondere Preiswürdigkeit vorzu- 
täuschen“ („Gablers Wirtschaftslexikon“). 
Die unverbindliche Preisempfehlung muß 
„in der Erwartung ausgesprochen werden, 
daß der empfohlene Preis dem von der 
Mehrheit der Empfehlungsempfänger vor- 
aussichtlich geforderten Preis entspricht“ 
($ 38a GWB). Das Bundeskartellamt ist in 
diesem Punkt nicht nur ungewöhnlich pe- 
nibel, sondern hinsichtlich der Geldbußen 


auch ausgesprochen drakonisch. Vor die- 


sem Hintergrund muß man sich fragen, ob 


Peeker 8/85 


die unverbindlichen Preisempfehlungen 
für Apple-Produkte Mondpreise sind, denn 
für eine Reihe von Produkten ist der 
„Marktpreis“ (= vom Einzelhändler üb- 
licherweise geforderter Preis) oft bis zu 
oder teils sogar über 50% niedriger als der 
empfohlene Preis. Einige Beispiele (auf- 
grund der Apple-Preisliste, Stand März 
1985): 

Apple Ile Grundgerät: empfohlen DM 
3400,-, dagegen z.B. bei Vobis DM 1993, - 
Apple llc Grundgerät: empfohlen DM 
3750,-, dagegen z.B. bei ProSoft DM 
2649, - 

512K-Erweiterung für Macintosh: empfoh- 
len DM 3780,- dagegen z.B. bei Schap- 
pach DM 1680,- oder bei Hoco DM 1690,- 
Macintosh Grundgerät mit 512K: empfoh- 
len DM 12250,-, dagegen z.B. bei Koslik 
DM 9500,- 

Die Vergleichspreise sind Anzeigen ent- 
nommen. Ergiebiger ist die Auswertung 
der tatsächlichen Preislisten der Einzel- 
händler. 


Für mich als Redakteur sind diese Preisab- 
weichungen — gelinde gesagt — ein Arger- 
nis. Als ich den Testbericht zu der AP33 


4 hobby 44 





ten, da der Computer die Linien bricht. 
Beim N-Eck und bei der Tortenstück-Gra- 
fik wurden Eck- bzw. Kreisformeln not- 
wendig. In einem kurzen Artikel ist es 
schwierig, ihre Arbeitsweise Anfängern 
einfach und deutlich zu erklären. Ein Tip: 
Experimentieren Sie etwas, dann wird Ih- 
nen alles klar. Denn das Programm soll ja 
zum Experimentieren anregen. Für Fort- 
geschrittene sind die Formeln leichter zu 
durchschauen, zumal sie wohl auch öfter 
eingesetzt werden. Abschließend ist zu 
sagen, daß die Programme einen Mittel- 
weg zwischen Übersichtlichkeit und Kürze 
beschreiten. Aus diesem Grunde wurde 
auch bewußt auf ein Menü zur Auswahl 
der einzelnen Figuren verzichtet. Wer dies 
nicht missen möchte, wird das Problem 
auch als Anfänger durch Eingabe eines 
Strings und GOTO bzw. GOSUB lösen 
können. 


Und nun viel Spaß! 


(= 1024K-RAM-Karte) der Firma IBS er- 
stellte, die im Handel für ca. DM 3400,- 
(mit geringfügigen Schwankungen nach 
oben und unten) erhältlich ist, bot sich ein 
Preisvergleich zu der 512K-Mac-Erweite- 
rung an. Welchen Preis sollte ich jedoch 
hier ansetzen, den „empfohlenen“ Händ- 
lerpreis von DM 3780,- oder den um über 
50% niedrigeren „üblichen“ Håndlerpreis 
von ca. DM 1700,-? Wenn Schulen und 
Universitäten Rabatte erhalten, dürften 
wohl die empfohlenen Preise und nicht die 
Marktpreise als Bezugsbasis dienen. Je- 
denfalls fiele es dem „Empfehlungsemp- 
fänger“ dann nicht schwer, ca. 20-30% 
abzuziehen, denn damit läge er immer 
noch über dem Marktpreis. Also nur eine 
Augenwischerei? u u 

Ich kann hier nur hoffen, daB man sich zu 
einer realistischeren Preispolitik ent- 
schließt oder Listen mit „unverb. empf. 
Verkaufspreisen incl. MwSt.“ gar nicht 
mehr an Endabnehmer abgibt, denn schon 
manche „empfohlene“ Augenwischerei 
ist ins Auge gegangen. 

U. Stiehl 


67 
































GRAFIK.DEMOS 





1000 REM Ralf Knoke 
1010 REM Oktober 1984 


1020 : 

1100 REM Raster-Muster 

1110 HOME : HGR2 : HGR :M = 7 

1120 HCOLOR= M 

1130 FOR I = Ø TO 279 STEP 3: HPLOT I,@ TO I,191: NEXT 
1140 FOR I = Ø TO 159 STEP 3: HPLOT 1,1 TO 279,I: NEXT 


1150 IF M = 7 THEN M = Ø: GOTO 1120 

1160 GET A$: HOME 

1170 HGR2 

1180 : 

1200 REM Fünfeck-Stern 

121Ø HCOLOR= 7 

1220 HPLOT 85,15 TO 14Ø,18Ø TO 195,15 TO 52,117 TO 228,117 
TO 85,15 

1230 GET A$: HGR2 ` 

124Ø : 

1300 REM Keplerscher Sternkörper 

1310 A = 14Ø:B = 95:C = 5:D = 227:E = 67 :F = 
= 87:I = 53:J = 23:K = 123:L = 5 


HCOLOR= 3 


1320 HPLOT A,B TO A,C 

1330 HPLOT A,B TO D,E 

1340 HPLOT A,B TO F,G 

1350 HPLOT A,B TO H,G 

1360 HPLOT A,B TO I,E 

1370 HPLOT F,J TO I,K TO D,K TO H,J TO A,L TO F,J 

1380 HPLOT F,J TO A,39 TO H,J TO H,M TO I,K TO N,A TO A,L 
TO 176,A TO D,K TO F,M TO F,J 

1390 HPLOT 120,157 TO H,G TO H,133: HPLOT 161,158 TO F,G TO 


F,134 

1400 HPLOT 2Ø7,93 TO D,E TO F,57: HPLOT 16Ø,33 TO 14Ø,5 TO 

12Ø,33: HPLOT 87,57 TO I,E TO 73,93 

141Ø : 

1500 REM Stern-Löscher 

151Ø GET A$: HCOLOR= 7 

1520 FOR I = Ø TO 140: HPLOT I,Ø TO I,191: HPLOT 279 - L,Ø 
TO 279 — 1,191: NEXT 

153Ø GET A$ 

154Ø : 

16ØØ REM Pythagoras 

1610 HGR2 : HCOLOR= 3 

1620 A = 156:B = 169:C = 109 

1630 HPLOT B,D TO B,A TO C,A 
84,81 TO 99,55 TO E,F T 

1640 GET A$ 

1659 : 

1700 REM Farbtafel 

171Ø HOME : HGR 

1728 X = 3:F= Ø 

1730 VTAB (22): PRINT "FARBE : "; 

1740 VTAB (24): HTAB (X): PRINT F;: HTAB (X + 5): PRINTF + 
1;: HTAB (X + 10): PRINT F + 2;: HTAB (X + 15): PRINT 
F + 3;: HTAB (X + 20): PRINT F + 4;: HTAB (X + 25): 
PRINT F + 5;: HTAB (X + 30): PRINT F + 6;: HTAB (X + 
35): PRINTF +7; 

1750 M = Ø:D = 1 

1760 HCOLOR= M 

1770 FOR I = @ TO 279: HPLOT I,@ TO I,159 

1780 IF I = D x 35 THEN D = D + 1:M = M + 1: HCOLOR= M 

1790 NEXT 

1799 : 

1800 REM 3-D-Quader 

181Ø GET A$: HOME : HGR : HGR2 

1820 HCOLOR= 7: HPLOT 65,85 TO 155,85 TO 155,175 TO 65,175 
TO 65,85 TO 128,21 TO 218,21 TO 218,111 TO 155,175 

1830 HPLOT 155,85 TO 218,21 


:D = GBE = 124:F = 70 
TO C,D TO B,D TO E,F TO CD TO 


0 151,25 TO 196,51 TO B,D 



















1840 A = 128:B = 111 

1850 FOR I = 1 TO 22 

1860 HPLOT A,B TO A + 2,B:A = A + 4: NEXT 

1870 A = 128:B = 21 

1880 FOR I = 1 TO 22 

1890 HPLOT A,B TO A,B + 2:B = B + 4: NEXT 

1900 A = 128:B = 111 

1910 FOR I = 1 TO 16 

1920 HPLOT A,B TO A — 2,B + 2:A = A - 4:B = B + 4: NEXT 
1930 : 


2000 REM Pyramide 

2010 GET A$: HGR2 : HCOLOR= 7 

2020 HPLOT 126,157 TO 149,36 TO 83,114 TO 126,157 TO 
216,157 TO 149,36 TO 173,114 

2030 A = 83:B = 114 

2040 FOR I = 1 TO 22: HPLOT A,B TO A + 2,B:A = A + 4 

2050 NEXT 


68 

























216:B = 157 
2070 FOR I = 1 TO 11: HPLOT A,B TO À — 2,B - 2:A = À - 4:B 
— 4: NEXT 


N-Eck 
211Ø GET A$ 
2120 Z = 1 
2130 N = INT (( RND (1) * 120)) 

2140 HGR2 

2150 HCOLOR= 3 

2160 PI = 4 * ATN (1):Q = 2 * PI / N 


2170 A = 220:B = 96 
2180 C = A:D = B 
2190 G = 5 


2200 FOR I = 1 TO N 

2210 X = 80 * COS (Q * I) + 140:Y = 
2220 HPLOT X,Y TO 140,96: HPLOT X,Y 
2230 NEXT 

2240 REM Wird in Zeile 2260 "Z" vergföBert, 
2250 REM dann finden mehr Durchlåufe statt. 
2260 Z = Z + 1: IF Z = 3 THEN GOTO 2300 
2270 GET A$: GOTO 2130 


80 * SIN (Q * I) + 96 
TO C,D:C = X:D = Y 


2280 : 

2300 REM Tortenstück-Grafik 

2310 GET A$ 

2320 PI = 3.14159265357 

2330 DEF FN DR(W) = (W * PI) / 180 
2340 NX = 140 

2350 NY = 96 

2360 RA = 95 

2378 HGR2 : HCOLOR= 7 


2380 GOSUB 3000 

2390 RA = 95 / 2: GOSUB 3000 

2400 FOR I = 1 TO 3 

2410 WB = FN DR(I * 120) 

2420 X = RA * COS (WB):Y = RA * SIN (WB) 
2430 X = NX + X:Y = NY + Y 

2440 HPLOT NX,NY TO X,Y 











2450 NEXT 

2460 FOR I = 1 TO 3 

2470 X1 = NX + 95 * COS ( FN DR(I * 120 + 60)):Y1 = NY + 96 
* SIN ( FN DR(I * 120 + 6Ø)) 

2480 X2 = NX + 95 / 2 * COS ( FN DR(I * 120 + 60)):Y2 = NY 


+ 95 / 2 * SIN ( FN DR(I * 120 + 60)) 
2490 HPLOT X1,Y1 TO X2,Y2 
2500 NEXT 
2510 GET A$: HOME : TEXT : END 
3000 FOR I = Ø TO 360 
3010 WB = FN DR(I) 
3020 X = RA * COS (WB):Y 
3030 X = NX + X:Y = NY + 
3040 IF I = Ø THEN HPLOT 
3Ø5Ø HPLOT X1,Y1 TO X,Y 
3Ø6Ø X1 = X:Y1 = Y P 
3Ø7Ø NEXT 
RETURN 


RA * SIN (WB) 
























>< < H 


,Y: GOTO 3060 


Diversi-DOS 2-C 


Die 4-C-Dateien HELLO und ASMDIV åndern ein im 
Speicher befindliches Original-DOS-3.3 in Diversi-DOS 
4-C um. Trotz gleicher Dokumentation gilt dies nicht får 
die Dateien HELLO und ASMDIV von Version 2-C, die 
auf der Peeker-Sammeldisk # 6 enthalten sind (s. 
Peeker, Heft 6/85, S. 74). Der Einfachheit halber haben 
wir deshalb zusåtzlich die 4-C-Dateien auf die Sammel- 
disk # 8 aufgenommen. Die Implementierung unter 4-C 
ist Ubrigens noch einfacher: Original-DOS-3.3 booten, 
dann Sammeldisk # 8 einlegen und HELLO starten 
(RUN HELLO). Wenn das Menü erscheint, ist DOS 3.3 
bereits gepatcht. Hauptmenü verlassen und mit INIT 
Leerdiskette formatieren. Dies ist alles. 

Inzwischen ist die Firma DSR umgezogen. Die neue 
Anschrift lautet: 

Diversified Software Research, 34880 Bunker Hill, 
Farmington, MI 48018-2728, USA. 





Peeker 8/85 








Ein Einzeiler 


von Hans-Peter Lendle 


ZEICHENJAGD ist ein kleines Spiel und 
Trainingsprogramm mit der Tastatur des 
Computers. Ein einzelner Buchstabe er- 
scheint irgendwo auf dem Bildschirm und 
muß innerhalb einer bestimmten Zeit mit 
der entsprechenden Taste „erwischt“ 
werden. Ein Tonsignal belohnt den Erfolg, 
und die Wartezeit wird um eine Stufe ver- 
kürzt. Erreicht man Stufe 2, so kommt der 
nächste Buchstabe im Alphabet dazu, 
ebenso wenn man von Stufe 1 auf 2 abfällt 
(damit der nächste Aufstieg beschwerli- 
cher wird). 


Spielverlauf 


Tippt man keine oder die falsche Taste, so 
wird die Wartezeit um eine Stufe verlän- 
gert. Fällt man auf Stufe 9 zurück, wird ein 
Buchstabe weggenommen (zur Erleichte- 
rung). Vier Buchstaben bleiben jedoch in 
jedem Fall übrig. 

Das Programm startet mit Stufe 0 und 
Buchstabe „A“. Es „bremst“ sich, wenn 
keine Eingabe erfolgt, auf Stufe 9 ab. Die- 
se Stufe ist bequem für das „Ein-Finger- 
Adler-Suchsystem“ geeignet. Wird „A“ 
eingetippt, so erhöht sich die Spielstufe 
auf 2, bei der der Buchstabe „B“ hinzu- 
kommt. Mit etwas Geschick gesellen sich 
auch noch „C“ und „D“ dazu, mit sinken- 
der Wahrscheinlichkeit weitere Buchsta- 
ben — man fällt zurück. 

Jetzt muß man sich Buchstabe um Buch- 
stabe und immer wieder Stufe um Stufe 
hocharbeiten. Stufe 1 mit allen Buchsta- 
ben des Alphabets ist wohl sogar für 
,Zehn-Finger-Profis" auf die Dauer 
schwer zu halten. 

Der aktuelle Leistungsstand steht oben in 
der Mitte des Bildschirms: die Spielstufe 
invers als Ziffer von 1 bis 9, der letzte zu 
erwartende Buchstabe blinkend daneben. 


Programmbeschreibung 


Die Beschreibung zeigt, daß das Pro- 
gramm durchaus nicht linear abläuft. Wenn 
man alles in einer Zeile unterbringen will, 
braucht man zwangsläufig etwas, was IF- 
THEN-ELSE in Applesoft simuliert. Wie 


Peeker 8/85 


Zeichenjagd 












Bild 1 zu (10) 


K vermindern 


Bild 2 zu (11) 


von Franz-Josef Hüskens in Peeker 2/84 
beschrieben, geht das mit Verknüpfungen 
von Wahrheitswerten. 


Bei der ZEICHENJAGD geschieht dies in 
den Teilen (9) bis (11). Dort nehmen die 
logischen Ausdrücke (P = B) oder (P <> 
B) die Werte 1 oder 0 an, die dann in 
arithmetische Ausdrücke eingebaut wer- 
den können. Bild 1 und 2 stellt diese 
umfangreichen Teile noch einmal als Fluß- 
diagramm dar. 


Das Programm selbst besteht aus 13 An- 
weisungen (das NEXT im Abschnitt (7) 
mitgezählt), die in einer einzigen Zeile un- 
tergebracht sind — und doch ist es ein 
durchaus brauchbares Trainingsprogramm 
für Anfänger und Könner (und mindestens 


Taste = 
Anzeige ? 


T lassen 


K lassen 







T vermindern 












so spannend wie die ersten Computer- 
Pingpongspiele). 

Beim Eingeben des Programms sollten 
keine Leerzeichen getippt werden, weil 
sonst die Eingabezeile zu lang werden 
könnte. 

Wer auf bestimmte Buchstaben oder an- 
dere Zeiten mehr Wert legt als auf eine 
Verkürzung, kann sich ohne großen Auf- 
wand das individuelle MaBprogramm aus 
mehreren Applesoft-Zeilen neu schreiben. 
Meine böse BASIC-Fanatiker-Seele kann 
sich die Frage an die Pascal-Enthusiasten 
nicht verkneifen: „Geht so 'was auch in 
Pascal?“ Aber ganz gleich, wo Sie stehen, 
ich wünsche Ihnen viel Spaß mit der ZEI- 
CHENJAGD, sei es beim Spielen, beim 
Trainieren oder beim Ändern. 


69 





70 


ZEICHENJAGD (Einzeiler) 


Die nachgestellten Zahlen in Klammern sind nicht einzugeben. 


1 HOME : (1) 
Z = RND (1): (2) 
POKE 1Ø4Ø,T + 48: (3) 
POKE 1Ø44,K + 64: (4) 
B = INT (Z * K) + 193: (5) 
POKE 1244 + Z * 724,B: (6) 
FOR I = 1 TO 350 * T — 250: NEXT : (7) 
P = PEEK ( — 16384): (8) 
PRINT CHR$ (7 * (P = B) + 32 * (P < > B));: (9) 
T = T+ (B <> P) * (T < 9) — (B = P) = (T > 1): (10) 
K =K+ (T = 2) * (K < 25) - (T = 9) * (K > 5): (11) 
GOTO 1 (12) 


Erklårung zu den einzelnen Abschnitten: 


(1) Bildschirm löschen; 

(2) Zufallszahl Z bilden; 

(3) Spielstufe T (invers) in Bildschirmspeicher POKEn; 

(4) Höchsten Buchstaben (blinkend) in Bildschirmspeicher 
POKEn; 

(5) neuen Buchstaben B aus Zufallszahl Z bestimmen; 

(6) Buchstabe B in Bildschirm POKEn (diese POKEs können 
auch die "Screenholes" treffen); 

(7) der Spielstufe entsprechend warten; 

(8) eingegebenen Buchstaben P aus Tastaturspeicher lesen; 

(9) Tonsignal geben, wenn Buchstabe stimmt; 

(1Ø) Spielstufe dem derzeitigen Wert und der Eingabe ent- 
sprechend neu bestimmen (siehe Bild 1); 

(11) höchsten Buchstabe dem derzeitigen Wert und der Spiel- 
stufe entsprechend veråndern (siehe Bild 2); V 

(12) wieder von vorn. 


RAN FRE . NEU 


H AM FRE BSAVE RAM.FRE.NEU, A$92B6, 
u 


92B6- AØ 19 

92B8- B9 D2 ØØ 
Das Programm RAM.FRE aus Peeker, Heft eg, SEAN ge 
1/2 - 85, S. 40 enthålt einen schwerwie- 92C8- E3 85 73 
genden Fehler im Algorithmus und läuft nn SP Sp å 
nur in wenigen Fällen einwandfrei (z.B. bei 92EØ- 


FRE.TEST). er 


Das Problem liegt bei Strings, die im Spei- s 


cher eine Seitengrenze überschreiten. Da 93ØØ- 
jeweils nur eine Seite gepuffert wird, über- GER 
nimmt das Programm den Teil des Strings, 9318- 
der auf der nächsten Seite liegt, aus der 932p- 


Page 3 (der Puffer umspannt den Bereich CR 


$0200 bis $02FF). Die somit übertragene spi 
Zeichenkette enthält dann im hinteren Teil 55485 


nur noch Schrott (um genau zu sein: einen 935Ø- 
Teil der Treiberroutine). s. 
In der neuen Version RAM.FRE.NEU wer- 9368- 
den die Strings nicht mehr im Eingabepuf- 9379- 


s š ; ñ 9378- 
fer gesichert, sondern in den zwei Seiten 938Ø- 


von $9400 bis $95FF, wobei jedoch nur rå 
die Strings, die im Bereich $9400 bis et 
$94FF liegen, bearbeitet werden können. 93AØ- 
93A8— 

93BØ- 

Diese Probleme treten bei der üblicher- 93B8- 
weise benutzten LC-Version nicht auf. 95C0— 
ú å 93C08- 

Aus Platzgrunden kann hier nur der Hex- 93DØ- 


dump abgedruckt werden, der Quelltext ist re 
auf der Peeker-Sammeldiskette enthalten. ver 


H. Grumser 93FØ- 
93F8- 


03 
A9 
85 
ES 
BØ 
8D 
FØ 
00 
07 
3F 
93 
93 
FF 
69 
45 
AØ 
E4 
3E 
2Ø 
BØ 
93 
18 
02 
E4 
FE 
DØ 
Bl 
Bl 
3E 
Bl 
3E 
00 
B1 
E6 
DØ 
B1 
F1 
70 
88 
Bl 


L$147 


19 





DB-MEISTER 


Adreß- und Schemabriefprogramm 


Der DB-Meister ist ein in Assembler 
geschriebenes, ungewöhnlich schnel- 
les, unkompliziertes und zugleich 

, Narrensicheres" AdreB-, Datei- und 

Schemabriefprogramm. 

Der DB-Meister dient zum Anlegen, 

Pflegen, Sortieren, Selektieren und 

Ausdrucken von Dateien aller Art. Als 

Apple-Benutzer wissen Sie, wie lang- 

sam viele Programme dieser Art sind. 

Nicht so der DB-Meister! 

Drei Beispiele: 

— Jeder beliebige von 560-999 Re- 
cords wird nach Indexfeldern in 0,2 
Sekunden gefunden. 

Eine komplette Datendiskette mit 
z.B. 600 Records läßt sich in 1 
Minute nach 3 Feldern sortieren 
und untersortieren. Dabei ist die 
Zeit fur Diskettenzugriff bereits mit- 
gerechnet. 

Das Einlesen eines 50 Sektoren 
langen Programm-Moduls dauert 
nur 3,5 Sekunden. 


Technische Daten des DB-Meisters 


Recordlänge bis zu 230 Zeichen 


560 bis 1000 Records pro Daten- 
diskette 


Maximal 25 Felder pro Record 


4 Datentypen (String, Integer, Dezi- 
malzahl, Real) 


Suche nach 3 Indexfeldern — je 4 
Zeichen lang — mit Wildcard-Funk- 
tion 

Sortieren und Filtern (kumuliertes 
Selektieren) geschieht nach den 
Index-Feldern 


Ausdruck der Dateien als Etiketten, 
Listen und Schemabriefe (mit Fel- 
der- und Tastatureinschüben an be- 
liebigen Stellen des Formbriefes) 


normal kopierbare Programmdisket- 
te, unterteilt in Hauptprogramme 
und diverse Hilfsprogramme 
einsatzfähig auf Apple lle oder Ilc. 
(Achtung: Brief-Modul läuft nicht mit 
Videx-Karte!) 


— 256K RAM-Disks verwendbar 
Gesamtpreis 290,- (2 Disketten + 


gedrucktes Manual) 
U. Stiehl 


c/o Dr. A. Hüthig Verlag 
Postfach 10 28 69 - 6900 Heidelberg 





Peeker 8/85 





Die Polaroid-Foto-Systeme 


getestet von Thomas Bühner 
und Prot. Dr. Klaus Hausmann 


Zur —Foto-Dokumentation von 
Computer-Grafiken griff man bis- 
her zur vertrauten Kleinbildkamera. 
Polaroid hat jetzt zwei Systeme 
entwickelt, die bessere Ergebnisse 
erwarten lassen. 

Wer håufiger darauf angewiesen 
ist, Diagramme, Schaltplåne oder 
andere mit Computer-Hilfe ge- 
schaffene Grafiken zu Papier zu 
bringen, hatte bisher zwei generel- 
le Möglichkeiten zur Dokumenta- 
tion seiner Arbeit: einerseits die 
Ausgabe des gespeicherten Bildes 
mittels spezieller Hardcopy-Geråte 
— üblicherweise Plotter oder Ma- 
trixdrucker — auf Zeichenpapier 
und andererseits die Fotografie 
vom SchwarzweiB- oder Farb-Mo- 
nitor. 


Plotter und Matrixdrucker 


Der Einsatz des Plotters ist oft 
nicht möglich, da er nur von einer 
beschrånkten Anzahl von Grafik- 
programmen angesprochen wer- 
den kann. Matrixdrucker liefern 
zwar eine punktgenaue Wiederga- 
be des Originals, verzerren aber 
auf Grund unterschiedlicher hori- 


Bild 1 


Peeker 8/85 


zontaler und vertikaler Dehnungs- 
faktoren oft Kreise zu Ellipsen und 
Quadrate zu Rechtecken. Da 
mehrfarbige Matrixdrucker noch 
wenig verbreitet sind, entfällt auch 
die Möglichkeit zu bunten Repro- 
duktionen. 


Normale Kamera 


Die Frage Schwarzweiß oder Bunt 
spielt keine Rolle bei der Fotografie 
vom Bildschirm. Für beide Fälle 
gibt es geeignetes Material im 
Fachhandel. Ein Foto ist außerdem 
die originalgetreueste Form der 
Bild-Dokumentation. Dennoch 
wird dieser Weg selten eingeschla- 
gen, da die Nachteile zu schwer 
wiegen. Denn wie geht man vor? 

Zunåchst wird die Kamera auf ein 
Stativ montiert und vor dem Moni- 
tor aufgebaut. Dabei muß man ge- 
nau darauf achten, daß die Film- 
ebene parallel zur Ebene des Bild- 
schirms liegt, da sonst eine ver- 
zerrte Aufnahme die Folge ist. Hel- 
ligkeit und Kontrast oder Farbsåtti- 
gung des Bildes müssen genau 
stimmen. Dann wird der Raum ab- 
gedunkelt, um störende Reflexe zu 


A 


fa 

til» 

TU 
Íl. 
p 
Ft: 


Dë e 


ST 
pr 
Hat 


Polaroid Palette: 
Heidelberg 





vermeiden. Um wenigstens ein 
oder zwei verwertbare Negative 
oder Dias zu erhalten, macht man 
nun eine Serie von Aufnahmen mit 
unterschiedlicher Zeit-/Blenden- 
Kombination. Schließlich gibt man 
den Film ins Labor und erhålt eini- 
ge Tage später die fertigen Abzü- 
ge. Doch selbst dann, wenn man 
eine eigene Dunkelkammer be- 
sitzt, wird man bestenfalls nach ein 
paar Stunden die Ergebnisse vor- 
liegen haben. Und diese Prozedur 
muB fur jede Foto-Dokumentation 
erneut durchlaufen werden. 


Polaroid-CU-5-Makro- 
Modul-System 


Im Vergleich zur herkömmlichen 
Bildschirm-Fotografie ist der Ein- 
satz des CU-5-Makro-Modul-Sy- 
stems kinderleicht. Aus den vielfäl- 
tigen Kombinationsmöglichkeiten 
der verfügbaren Module soll hier 
nur die gezeigt werden, mit der 
man Sofortbilder vom 12-Zoll-Mo- 
nitor macht. Für diesen Zweck be- 
steht die Kamera aus dem Kame- 
rakörper, dem Linsensystem und 
einem schwarzen Kunststofftrich- 
ter. Der Film wird eingelegt, Be- 
lichtungszeit und Blende nach den 
Empfehlungen des Herstellers ein- 
gestellt und der Trichter an den 
Bildschirm gepreßt. Dann betätigt 
man den Abzug - ähnlich wie bei 
einer Pistole —, entnimmt die Film-/ 
Entwickler-Folie, wartet eine Minu- 
te und zieht anschließend das ferti- 
ge Foto ab. 

Das Scharfstellen entfällt, da die 
Schärfe-Ebene des Linsensy- 
stems genau auf dem Bildschirm 
liegt. Ein Abdunkeln des Raums 
wird ebenso überflüssig, denn alle 
Lichtquellen sind durch den Kunst- 
stofftrichter abgeschirmt. Vor der 
ersten Benutzung des Geräts ist 
es allerdings ratsam, das Innere 
mit einem schwarzen Mattlack zu 
bestreichen, da das Kunststoffma- 
terial selbst so stark reflektiert, daß 
unter Umständen Spiegelungen 
der einzigen Lichtquelle, die nicht 
abschirmbar ist, auftreten können: 
die des Monitors selbst. 





Durch die gute Abbildungsqualität 
fällt nun ein Manko ins Auge: Da 
sich der Elektronenstrahl, der den 
auf der Röhre aufgetragenen 
Leuchtstoff zum Fluoreszieren 
bringt, horizontal über das Bild be- 
wegt, entstehen Rasterlinien, die 
bei der Betrachtung des Fotos nun 
noch stärker ins Auge fallen als 
zuvor am Monitor selbst. Bei Farb- 
fotos muß man leider auch feststel- 
len, daß das empfohlene Filmma- 
terial nicht für diesen Zweck geeig- 
net ist. Die Farben wirken insge- 
samt sehr blaß, und der Rot-Anteil 
fehlt auf dem Foto fast ganz. Für 
Schwarzweiß-Aufnahmen stellt 
das Polaroid-CU-5-Makro-System 
aber eindeutig ein leicht zu hand- 
habendes Mittel dar, dessen Er- 
gebnisse einfachen bis mittleren 
Ansprüchen genügen. 


Polaroid-Palette-System 


Bei der Entwicklung des Palette- 
Systems besann man sich darauf, 
wie die Farberzeugung beim Fern- 
sehgerät vor sich geht: Die drei 
Grundfarben Rot, Grün und Blau 
werden auf dem Bildschirm in un- 
terschiedlichen Anteilen überein- 
ander projiziert und vermischen 
sich so für unser Auge. Hätten wir 
ein fotografisches Gedächtnis, so 
könnten auch zuerst alle Rot-An- 
teile des Bildes gezeigt werden, 
anschließend alle Partien, die Grün 
enthalten, und zum Schluß das 
Blau. Nun, für einen menschlichen 
Beobachter wäre eine solche Bild- 
Betrachtung ungeeignet, eine Fo- 
tokamera jedoch könnte keinen 
Unterschied wahrnehmen zwi- 
schen einer gleichzeitigen und ei- 
ner aufeinanderfolgenden Darbie- 
tung der drei Grundfarben. 

So besteht also das Palette-Sy- 
stem aus einem beigen Metallge- 
häuse, das ein Netzteil, einen klei- 
nen Schwarzweiß-Bildschirm, ein 
Rad mit Filtern in den drei Grund- 
farben und einen Motor enthält, der 
das Rad dreht. An der Rückseite 
befinden sich ein RS-232-C-Ein- 
gang, Monitor-Ein- und -Ausgang, 
ein Anschluß für einen Foto-Win- 


71 





der und die bei Monitoren üblichen 
Regler. 

Nimmt man das Gerät zum ersten 
Mal in Betrieb, so wird zunächst 
über das mitgelieferte Kabel eine 
Verbindung zum RS-232-C-Inter- 
face, das in einem der Apple-Slots 
steckt, hergestellt. Dieses Inter- 
face ist nicht im Lieferumfang ent- 
halten; viele Anwender werden 
vermutlich die Super-Serial-Card 
von Apple verwenden. Dann 
schließt man den Monitor des Pa- 
lette-Systems am Computer an. 
Nun wird die Programm-Diskette 
ins Laufwerk gelegt und gestartet. 
Das Gerät muß nun noch justiert 
werden, was in weniger als fünf 
Minuten erledigt ist. Jetzt ist es 
betriebsbereit. Beim nächsten Mal 
entfallen alle diese Schritte, ledig- 
lich eine Aufwärmzeit von 20 Minu- 
ten muß eingehalten werden. Je 
nach Wunsch befestigt man die 
Sofortbild- oder die 35-mm-Kame- 
ra an der Vorderseite. 

Alle Aufnahmen zu diesem Artikel 
entstanden, soweit nicht anders 
vermerkt, mit der Sofortbild-Kame- 
ra auf Polaroid Polacolor ER Land 
Pack Film Type 669. 


Besitzt man nur ein Diskettenlauf- 
werk, muß man bei jeder neuen 
Aufnahme einen Disk-Wechsel 
vornehmen. Bei zwei Drives ist das 
nicht nötig. Die Bilder müssen als 
Binär-File auf Diskette vorliegen. 
Zu Problemen kann es also kom- 
men, wenn man etwa eine Szene 
aus einem kopiergeschützten Pro- 
gramm fotografieren will. Gewöhn- 
lich unterbricht man dann zum 
richtigen Zeitpunkt mit ,Ctrl-Offe- 
ner-Apfel-Reset“ und nachfolgen- 


dem „Ctri-Reset“, verschiebt das 
Bild mit dem Monitor- „Move“ -Be- 
fehl in einen sicheren Teil des 
Speichers, bootet eine Diskette mit 
normalem DOS und speichert 
schließlich die Grafik ab. (Ctrl-Of- 
fener-Apfel-Reset zerstört übri- 
gens je 2 Bytes je Page, wodurch 
das HGR-Bild geringfügig „ent- 
stellt“ wird.) 

Für den, der mit dem UCSD-Pas- 
cal-System Bilder geschaffen hat, 
wird bei Polaroid-Palette ein Pro- 
gramm mitgeliefert, das diese 
Dateien in das DOS-3.3-Format 
umwandelt und damit für eine Fo- 
tografie zugänglich macht. Doppelt 
hochauflösende Grafik, bei der die 
80-Zeichenkarte des Apple lle ein- 
gesetzt wird, kann mit der bisher 
vorhandenen Software nicht verar- 
beitet werden. 

Ist die Vorlage nun geladen, so 
kann man sich vor der Aufnahme 
ansehen, an welchen Stellen des 
Bildes die einzelnen der acht Ap- 
ple-Farben vertreten sind. Dem 
geübten Palette-Benutzer bietet 
diese Option die Möglichkeit, das 
Aussehen des fertigen Fotos in et- 
wa einzuschätzen und schon bei 
der ersten Aufnahme die nötigen 
Korrekturen vorzunehmen. 

Vor der Belichtung des Films prüft 
das Programm diese Farbvertei- 
lung und dreht zunächst den roten 
Filter vor das Objektiv der Kamera. 
Nun wird der zunächst leere 
Schirm an den Stellen gefüllt, die 
die größte Rot-Intensität aufwei- 
sen. Der Benutzer sieht auf sei- 
nem Monitor dasselbe, nur natür- 
lich nicht in Farbe. Einige Sekun- 
den später füllen sich die Stellen, 


Flaechennutz ung 
im untersuchten Gebiet 


Bild 2 


72 


ja 


bunga tired 


Hp ER 


zem 
KH 
E 
Ke 
wo 
EH 

E 
Kg 
ES? 
enen 
EH 
E 
E 
3 





Flaechennutz ung 
im untersuchten Gebiet 


F A 


Bild 3 


die eine geringere Rot-Intensitåt 
aufweisen. Dieser Prozeß setzt 
sich fort, bis alle Teile, die einen 
Rot-Anteil aufweisen, erschienen 
sind. Der Schirm wird daraufhin 
gelöscht, das Filterrad dreht sich 
und der Vorgang findet von neuem 
für die Farben Blau und Grün statt. 
Je nach Filmsorte dauert ein kom- 
pletter Belichtungszyklus ein bis 
zwei Minuten. 


Wenn im voraus klar ist, welche 
Bilder aufgenommen werden sol- 
len, besteht die Möglichkeit, all 
dies vollautomatisch ablaufen zu 
lassen, so daß man innerhalb von 
einer Viertelstunde etwa zehn ferti- 
ge Dias herstellen kann. 


Die oben erwähnten Rasterstreifen 
in der Aufnahme erscheinen bei 
dem Palette-System nicht mehr. 
Das wird dadurch erreicht, daß der 
Elektronenstrahl des kleinen Moni- 
tors bei jedem zweiten Durchgang 
um eine halbe Strahlbreite vertikal 
verschoben wird, so daß die hori- 
zontalen Leerstreifen, die gewöhn- 
lich zu erkennen sind, aufgefüllt 
werden. 


Sieht man sich bunte Apple-Grafi- 
ken auf Schwarzweiß-Schirmen 
an, so bemerkt man auch eine ver- 
tikale Rasterung: Alle Farben außer 
Schwarz und Weiß werden durch 
senkrechte Streifen dargestellt. 
Zur Erzielung unterschiedlicher Ef- 
fekte kann dies bei Aufnahmen mit 
dem Polaroid-Palette-System bei- 
behalten werden. 


Technische Tips 


Hat man nun ein Foto vor sich lie- 
gen, so stellt man fest, daß die 


Bebaut 13 % 
Verkehrsuege 
Nutzflaeche 
Gewaesser 
Brachland 
Naturschutz 


Re 


Bea 


LP 
KE 
LE 
| 
E 


MILE 


1982 





Probleme, die bei normal großer 
Schrift auch auf Farbmonitoren 
auftreten, nicht behoben sind: Die 
vertikalen Schriftteile sind nicht 
weiß, sondern grün und violett. 
Dieser Effekt geht auf die Art der 
internen Farbdarstellung des Apple 
zurück und kann durch herkömmli- 
che Methoden nicht behoben 
werden. 

Das Palette-System bietet dem 
Benutzer jetzt aber die Möglich- 
keit, jede der acht Farben der Ap- 
ple-Grafik in eine der 72 gespei- 
cherten umzuändern. Zunächst 
wird festgestellt, wo eine Verbes- 
serung nötig ist. In unserem Fall 
sollten die Buchstaben lesbar sein. 
Also gibt man dem Programm an, 
daß Weiß, Grün und Violett auf 
dem Foto in Gelb (C5) erscheinen 
sollen. Um auch gleich eine andere 
Farbkombination auszuprobieren, 
ersetzt man beispielsweise Oran- 
ge durch Hellgrün (B6), Blau durch 
Rot (D6) und Schwarz durch Dun- 
kelblau (F5). Buchstaben und Um- 
randung erscheinen nun einheit- 
lich. Nachteilig ist, daß jetzt auch 
alle Flächen, die zuvor grün oder 
violett waren, gelb sind. Bei der 
Schaffung von Bildern muß man 
also darauf achten, daß sich nur die 
vier Farben Schwarz, Weiß, Oran- 
ge und Blau später auf dem Foto 
unterscheiden. Mit den neuen 
Möglichkeiten kann man natürlich 
ebenso einen effektvollen hellen 
Hintergrund für Präsentationen 
schaffen. 

Im allgemeinen empfiehlt es sich 
jedoch, am äußeren Rand sparsam 
mit hellen Farben umzugehen. 
Sonst kann es schnell geschehen, 
daß die leichte kissenförmige Ver- 


Peeker 8/85 








NaCl Zugabe 


Bild 4 


zeichnung des Monitor-Bildes, die 
sich bei der Aufnahme ergibt, ins 
Auge fållt. 

Um dem Benutzer die Arbeit weiter 
zu erleichtern, liefert Polaroid be- 
reits eine Vorschlagsliste fur den 
Farbtausch mit. Die oberste Reihe 
entspricht dem Apple-Standard, 
wåhrend die Reihen 1 bis 8 Alter- 
nativen darstellen. Es fållt auf, daB 
Grün, Violett und Weiß immer 
durch dieselbe Farbe ersetzt wer- 
den. Das geschieht, um die be- 
schriebenen Probleme mit der Ab- 
bildung von Buchstaben und Zah- 
len zu verhindern. 

Die Benutzerführung « ist hier, 
ebenso wie im Rest des Pro- 
gramms, klar und unkompliziert. 
Wer mit den 72 vorhandenen Far- 
ben nicht zufrieden ist, kann selbst 
kreativ tätig werden und beliebige 
weitere Nuancen entwickeln. 


Technische Daten 


Produkt: 
System 
Einsatz: Makro-Fotografie 
Lieferumfang: Modul-System. 

Für Sofortbilder vom 12-Zoll-Mo- 
nitor: 

Kamerakörper 88-1 

Linsensystem 127 mm 88-5 
Monitorhaube 16 : 23,3 cm 88-49 
Filmmaterial: Polaroid Video Image 
Recording Land Pack Film Type 
611 und weitere schwarzweiße Po- 
laroid Land Pack Filme 

Computer: beliebig 
Voraussetzungen: Betriebsberei- 
ter Schwarzweiß-Monitor 

Preis inkl. Mwst.: in 0.a. Ausstat- 
tung ca. DM 1740,- 


Polaroid-CU-5-Makro- 


Peeker 8/85 





Produkt: 
stem 
Einsatz: Foto-Dokumentation von 
Computer-Farbbildern für gehobe- 
ne Ansprüche 

Lieferumfang: Monitor/Rekorder, 
Sofortbildkamera, Kleinbildkamera 
mit Autowinder, Sofortdia-Entwick- 
lungs-System, Anschlußkabel, 
Handbuch (80 Seiten, englisch), 
Programm-Diskette (kopierbar, 
englisch) 

Filmmaterial: verwendbar sind di- 
verse Sofortbild-Farbfilme, han- 
delsübliche Dia-Filme und Pola- 
roid-Sofortdias 

Computer: Apple-Il-Serie (jedoch 
keine Double-Hires-Unterstüt- 
zung) und verschiedene andere 
PCs 

Voraussetzungen: Computer, 1 
Diskettenlaufwerk (besser 2), RS- 
232-C-Interface 

Preis inkl. Mwst.: ca. DM 5600,- 
Bezugsquelle: Polaroid GmbH, Of- 
fenbach 


Polaroid-Palette-Sy- 


Abbildungen 


Bild 1: Motiv Heidelberg. 

Bild 2: Kreisdiagramm Flächennut- 
zung mit Original-Apple-Farbpalet- 
e (hier nur schwarzweiß). 

Bild 3: Kreisdiagramm Flächennut- 
zung mit ausgetauschten Farben, 
dunkler Hintergrund. Die Schrift ist 
nun lesbar geworden (hier nur 
schwarzweiß). 

Bild 4: Technisches Balkendia- 
gramm NaCl-Zugabe (hier nur 
schwarzweiß). 


ZUSATZ-KARTEN: 


V-24-Schnittstelle ............ 199,- Z-80-Karte ................. 139,- 
80-Zeichen-Karte m.Softswitch 236,- 16 K-Language-Karte ......... 138,- 
Centronics-Karte von Epson für Graphik . . . . 210,- für Text . . . . 145,- 
Centronics-Schnittstelle für 2 Drucker gleichzeitig ................... 129,- 
DOEN SoftWal ~. a aaa 198,- 
uper-Eprommer 239 
belegt keinen Slot, incl. Software für 2708-27128 ............ ø” 
i EN bl úa áð Vv Yasa heq s. RAA a auf Anfrage 
FDC 4 für alle Laufwerke pp . 70,- Bausatz wie links ............ 159,- 
Leerplatine wie oben incl. Prom u. Eprom .......................... 98,- 
Druck Spooler mit 16,32 oder 64 KB ................... Preis auf Anfrage 


EE -Controller epi contrown 


1 x 35 bis 2 x 80 Tr.-Disk, keine Patch-Disk notwendig, Patch DOS 3.3, Diversi- 
DOS 2-C, 4-C (DD MOVER), Pascal 1.1, Pascal 1.2, CPM 2.2, , ProDOS9 
101;11;1.1.7: Sie pk die Laufwerke E mischen 98, = 


=£ für 1 5⁄4" Slimline Laufwerk .............................. 39,- 
Gehäuse für 2 54" Slimline Laufwerke mit Platz für ein Netzteil ......... 159,- 
Gehäuse für 2 3%" Slimline Laufwerke mit Platz für ein Netzteil .......... 79,- 
TT .............................................. 229,- 
Floppy-Kobel 34pol. für 2 Laufwerke mit Shugart-Bus ................. 35,- 


Preh Commander Keyboards 


Wir bieten Ihnen die Preh-Qualität auch für Apple. AK 88 Spez. mit Gehäuse, An- 
schlußkabel, Zehner-Tastenfeld, dt. Zeichensatz, Sondarlisten für 


Ctrl-Codes und Rechenfunktionen ........................... 339,- 
Preh Commander Keyboard, frei programmierbar 
bis zu 10 Ebenen, pro Taste bis zu 250 Zeichen .............. nur 599,- 





TEAC 34" ‚Laufwerk FD 35 F535,- 


Speicherkapazität 1 MB, (formatiert 640 KB) jetzt für nur ........ 


Le m KÐ 





TEAC FD 55 A 1 x 40 Track ..... 445,- TEAC FD 55 B 2 x 40 Trac Kis 515,- 


TEAC FD 55 E 1 x 80 Track ..... 490,- TEACFD55F2x80Track ..... 560,- 
GE EE EEE ETNE nur 799,- 
Apple®-kompatibles Laufwerk incl. Gehäuse + Kabel ................ 599,- 


320 KB Laufwerk für Ic ................. 948,- 
148 KB Laufwerk für IIc.................. 698,- 


EPSON DRUCKER 
EPSON FX 80 ............... 1670,- EPSONFX100 .............. 2159,- 
EPSON RX 80 .............. 1079,- EPSONRX80FT ............ 1295,- 


Die Microfloppy mit Zukunft: 


Speicherkapazität: 2 x 1 MByte formatiert: 2 x 
640 kByte. Anschlußfertig mit PROM-residenter 
Patchsoftware für CP/M 2.2, Apple DOS 3.3, Di- nen 
versiDOS 2-C, 4-C (DD MOVER), Apple Pascal Ó sss, 


1.1, Pascal 1.2, Pro-DOS 1.0.1, 
1.1,1.1.1 zum Preis von ........ 1640,- 1 Ç —_ 
Low Power Version ................. 1740,- E SH 


10 MB Winchester ..sotware 


fur DOS 3.3, CP/M 2.20, Pascal, Pro-DOS, incl. Controler 4490 
und Gehåuse, bootet alle Systeme von der Winchester ..... CH 


Sonderangebot 


Disketten Döb&Böd, 40 Track, SS/DD 10er Pack ......... 49 = 
Disketten Döb&Böd, 2x80 Track, SS/DD, 10er Pack .................. 9,- 


Gesamt-Preisliste anfordern! 








Preise inclusive gesetzlicher Mehrwertsteuer. 


LEDING electronics 


DFÜ 02373/66877 
Tel. 02373/63159 


Holtewiese 2 
5750 Menden 1 





73 











Das Bildverarbeitungssystem MAGIC 


Mit dem  MAGIC-Bildverarbei- 
tungssystem für den Apple Macin- 
tosh von Heyden Datasystems 
können nun Bilder oder Objekte 
mit einer normalen Video-Kamera 
aufgenommen und danach auf 
dem Bildschirm des Macintosh 
wiedergegeben werden. 


Das System, das aus Video-Kame- 
ra, Interface, Software und einer 
ausführlichen Bedienungsanlei- 
tung besteht, ermöglicht die Wei- 
terverarbeitung der Bilder mit dem 
MacPaint-Programm, woraus sich 
ungeahnte Möglichkeiten zur grafi- 
schen Aufbereitung ergeben. 
Selbstverständlich können die Bil- 
der auch in andere Anwender- 
Software wie MacWrite übernom- 
men werden. 


Die Handhabung ist auf Grund der 
Menü-Steuerung sehr einfach, wo- 
durch auch der Computer-Laie kei- 
ne Schwierigkeiten beim Ablauf 
der Bilderfassung hat. 


Die Möglichkeit der Bild-Digitali- 
sierung läßt sich vielfach aus- 
nutzen: 


Im wissenschaftliichen Bereich 
können Strukturen erfaßt und aus- 
gewertet werden; im Bereich Gra- 
fik, Werbung und Design bietet 
sich die Aufnahme von Teilbildern 
zur gestalterischen Überarbeitung 
an. 








TRICARD — 
Multifunktionskarte 
für Apple lle 


Für alle Apple-Besitzer, die keine freien Steckplätze 
mehr haben, gibt es jetzt eine Multifunktionskarte, 
die von der Firma FAST Electronic entwickelt wurde. 
Diese Karte ist vollständig kompatibel zur Super- 
Serial-Card der Firma Apple. 

Darüber hinaus bietet sie eine akku-gepufferte Uhr, 
die mit entsprechender Treibersoftware für ProDOS 
und Apple Pascal betrieben werden kann. 

Als dritte Option ist der Betrieb eines Druckers über 
den Parallel-Port möglich. Die entsprechende Soft- 
ware und das zugehörige Centronic-Verbindungs- 
kabel können bezogen werden. 

Ein detaillierter Bericht zu dieser Karte wird dem- 
nächst erscheinen. 


74 


Amay , 


HR Í Preisliste 
y f BEAJ | 
Ga I kostenlos! 


| 1 
| ÆA 


Katalog DM 2,— 


Unser Angebot im August 


Chinon Laufwerk 


(Test peeker 5/85) 
DM 398,- 


Profimax Ill 
(= Lazar Ilze, Test peeker 6/85) 
DM 1248,- 


D.O.S. Computersysteme 
Am Kühnbach 42, 7170 Schwäbisch Hall 11 
Telefon (0791) 51736 





Siemens entdeckt 
neue Primzahl 


Nachdem wir wiederholt im Peeker 
gezeigt haben, wie der „kleine Ap- 
ple-Rechner“ mit Primzahlen um- 
gehen kann (s. Primzahlen-Wett- 
bewerb, Heft 1/84 und folgende 
Ausgaben), zeigen wir einmal, wie 
der „große Siemens-Rechner" 
hier vorgeht und zitieren eine ein- 
gegangene Pressenotiz: 


Ein Leckerbissen für Mathematiker 
kommt aus Hamburg: Im Rechen- 
zentrum der dortigen Universität 
haben Wissenschaftler eine neue 
Primzahl ermittelt. Mit Hilfe eines 
Großcomputers vom Typ Siemens 
7.882 errechneten sie die Zahl 5 * 
2 1 23473 + 1, die ausgeschrie- 
ben insgesamt 7067 Stellen um- 
faßt. 


Zur Erinnerung: Primzahlen sind 
alle von 1 verschiedenen natürli- 
chen Zahlen, die nur durch 1 und 
durch sich selbst ohne Rest teilbar 
sind. Das beginnt mit der 2 — übri- 
gens die einzige gerade Primzahl — 
und geht weiter mit der 3, 5, 7, 11, 
13, 17, usw. 


Die neue Primzahl ist aber nicht 
nur wegen ihrer Größe bemer- 
kenswert. Ihre Besonderheit liegt 
vielmehr darin, daß sie für die gi- 
gantische Fermat-Zahl 2 TZ" 
223471 + 1 als Teiler fungiert. Un- 
ter allen Fermat-Zahlen ist dies die 
weitaus größte, deren Zerlegbar- 
keit bislang nachgewiesen werden 
konnte. Fermat-Zahlen sind alle 
Zahlen, die sich in der Form 2 1 2 
f n + 1 darstellen lassen. 


Der in Hamburg entdeckte Teiler 
für die genannte Fermat-Zahl ist 
die viertgrößte von den derzeit be- 
kannten Primzahlen. Die drei grö- 
Beren, die Primzahl 2 1 44497 - 1, 
2 1 86243 -1 und 2 7 132049 - 1 
sind in den USA ermittelt worden. 


Primzahlen kann man z.B. zum 
Verschlüsseln von Nachrichten 
verwenden. Dabei werden zwei 
sehr große Primzahlen miteinander 
multipliziert, was relativ einfach ist. 
Zum Entschlüsseln aber sind aus 
dem erhaltenen Produkt wieder die 
ursprünglichen Primzahlen zu er- 
mitteln — und dies ist für Uneinge- 
weihte extrem rechenaufwendig. 


Peeker 8/85 





Sich regelmäßig informieren 
«Peeker» abonnieren! 


Peeker Freaks nutzen jetzt die Vorteile eines Abos: 


® Regelmäßig erhalten Sie alle 
12 Peeker Ausgaben des Jahres 
und verpassen somit keinen Be- 
richt, kein Programm und keinen 


Tip 
@ Nutzen Sie den bequemen Ein- 


kaufsweg, denn Peeker kommt 
mit der Post zu Ihnen ins Haus 


@ Der Preis des Abonnements 


ist Ihr Vorteil: 
Sie zahlen DM 72,- (inkl. Porto) 
jährlich statt DM 6,50 Einzelpreis. 


Das ist ein Heft gratis im Jahr 

























WW ll 
mm 





Hüthig 


PUBLIKATION 





Copy-Killer jetzt in deutsch 


Das bereits im Peeker 1/84 be- 
schriebene Kopierschutzpro- 
gramm Copy-Killer ist nun in deut- 


@ @ @ 


7470 ALBSTADT 2 (Truchtelfingen) -Theophil-Wurm-Straße 7 - Tel. O74 32/133 16 - Telex 763317 mat d 





scher Version mit verbesserter Be- 
dienerführung erhàltlich. Program- 
me, die mit dem Copy-Killer ko- 
piert werden, lassen sich mit den 
bislang bekannten Bit-Kopierpro- 
grammen wie z.B. Nibbles Away, 
Locksmith etc. nicht mehr ko- 
pieren. 

Beim Kopiervorgang ist wie folgt 
vorzugehen: Zunåchst wird eine 
Copy-Killer Slave-Diskette ange- 
legt. Auf diese Diskette wird die 
Original-DOS-Diskette kopiert. 
Beim Kopieren auf die Slave-Dis- 
kette kann eine Meldung eingege- 
ben werden, die beim Booten an- 
gezeigt wird. So kann jede Disket- 
te individuell mit einer Seriennum- 
mer versehen werden. Der Preis 
betrågt DM 228,-. Copy-Killer fur 
ProDOS ist in Vorbereitung. 


Microfloppy mit2x 1 MByte 


Die Firma Sommer GmbH bietet 
ein Microfloppy-Terminal MFT-A 
an, das die bisher üblichen 5,25- 
Zoll-Laufwerke ersetzt oder ge- 
meinsam mit bereits vorhandenen 
Floppy-Disks betrieben werden 
kann. Die Einbindung in das vor- 
handene Betriebssystem (DOS 
3.3, CP/M 2.2 oder Apple Pascal 
1.1) erfolgt automatisch durch den 
Floppy-Disk-Controller mit PROM- 
residenter Patch-Software (Erphi- 
Controller); eine Patch-Diskette ist 
nicht erforderlich. Der Patch-Vor- 
gang — das Erweitern des Betriebs- 
systems und Einbinden der 80- 
Spur-Disketten — erfordert keiner- 
lei Eingaben durch den Benutzer. 


Das Doppellaufwerk in einem Me- 
tallgehåuse, das mit Kabel und 


Controller geliefert wird, hat eine 
unformatierte Speicherkapazität 
von 2 MBytes oder 1,2 MBytes 
formatiert. Der Preis betrågt DM 
1995,- (inkl. MWSt.). 








ProDOS-Debugger BUGBYTER 


getestet von Dr. 
Kehrel 


Jurgen B. 


Sie haben stunden- oder gar tage- 
lang an einem Assemblerpro- 
gramm geschrieben, starten es 
voller Hoffnung zum ersten Mal, 
und zu Ihrem Entsetzen verab- 
schiedet sich Ihr ausgeklügelter 
Code in das Niemandsland. Jetzt 
hilft nur noch eins: Mit Ruhe und 
einem guten Debugger (= „Ent- 
wanzer“) Schritt für Schritt den un- 
heimlichen Spuren zu folgen. 


79,- 
79,- 


Z-80-Karte 
Disk-Interface 


Centronics-Interf. m. Kabel 79,- 


16-K-RAM-Karte 


79,- 
109,- 
139,- 
299,- 


RS-232-Karte 
Eprommer (4, 8, 16 K) 
128-K-RAM-Karte 
256-KB-RAM-Karte 598,- 


Wild-Karte 99,- 
(knackt geschitzte Programme) 
Håndleranfragen erwünscht! 





76 


Assemblerprogramme erzeugen 
einen sehr schnellen und kompak- 
ten Code, und oft ist es erst da- 
durch möglich, bestimmte Dinge 
auszuführen. Ein gewaltiger Nach- 
teil ist aber, daß Sie keinerlei Feh- 
lermeldungen erhalten, wenn et- 
was „schief geht“. Allenfalls haben 
Sie das Glück, die Stimme des Ap- 
ple zu vernehmen, verbunden mit 
der Anzeige einer Adresse und der 
Registerinhalte. Dann wissen Sie 
zumindest, wo Sie gelandet, aber 
immer noch nicht, wie Sie dorthin 
gekommen sind. 


80-Zeichen-Karte 
mit Sorftswitch, neue 
Vers. m. gest. scharf. Bild 


Speech-Karte 
Clock-Karte 
Super-Serial-Karte 


Komp 2E 

Apple 2E kompatible, Rechner 

64 K im 2E-Design, ohne Firmware 
80Z + 64K-Karte 99,- 
für 2E kompatible 


Appie-Info 1,- DM (Porto) 


149,- 


Hier hilft ein Programm weiter, das 
seinerseits Ihr Programm in Zeitlu- 
pe ausführt und Sie über alle Vor- 
gänge informiert. Solche „Debug- 
ger“ gibt es schon lange für den 
Apple, z.B. „Symbol Symon“, 
„The Bug“ und „Munch a Bug". 
Jetzt können Sie aber mit BUGBY- 
TER einen Vertreter dieser Art be- 
kommen, der alle seine Vorgänger 
in den Schatten stellt. 

BUGBYTER von Computer Ad- 
vanced Ideas Inc. in Berkeley (Ka- 
lifornien) ist auf jeder „ProDOS 
Assembler Tools"-Diskette von 
Apple enthalten, und selbst wenn 
Sie den ProDOS Apple-Assembler 
nie benutzen werden, macht schon 


Apple II 


+ Kompatible 
Komp 48 


48 K. 6502 ohne Firmware 


Komp 64 
64 K, 6502, 2-80, 15er-Block 
ohne Firmware 


der BUGBYTER den Kauf lohnend. 
(Fruher kostete der BUGBYTER al- 
lein $40.00) 

BUGBYTER ist ein Maschinenpro- 
gramm, das sich normalerweise ab 
$2000 im Speicher befindet. Was 
aber, wenn Ihr Code gerade hier 
liegt? Nun, Sie laden BUGBYTER 
einfach an irgendeine andere Stel- 
le, an der knapp 7K zusammen- 
hångend frei sind, denn BUGBY- 
TER läuft überall, auch in der 
Language Card. Zusåtzlich benutzt 
BUGBYTER den Stack im Bereich 
von $0100 bis $011F, was aber 
selten zu Konflikten führt. 

In 6 Fenstern, deren Größe z.T. 
von Ihnen variiert werden kann, 


880,- 
Komp 64 S 


wie Komp 64, jedoch mit abgesetzter 
Tastatur mit 188 Funktionen. 


Motherboard 48 K 


389,- 


8 Slots, alle IC’s gesockelt, 
ohne Firmware, fertig geprüft 


— Motherboard 64 K 
wie oben, mit 6502 und 
Z 80, 64 K 


E SS TE £ E SS 
Alle Preise inklusi 


ve Mehrwertsteuer. 6 Monate 
Garantie Versand erfolgt per NN oder Vorkasse. 


399,- 


Hard-, Software 
Im Viertstr. 3-13 
6233 Kelkheim 
A (06198) 7523 





Peeker 8/85 





sehen Sie die Register, einen 
Stackausschnitt, den gerade aus- 
geführten Code in disassemblier- 
ter Form, von Ihnen ausgewàhlte 
Speicherstellen beliebiger Lage, 
einen Zykluszàhler und von Ihnen 


gewählte Stoppstellen (Break- 
points). Die unterste Zeile dient als 
Kommandozeile. Sie können je- 
derzeit Code disassemblieren, 
neuen Code assemblieren (eine 
Art Miniassembler ist eingebaut), 
die Register auf jeden Wert setzen 
oder sich Speicherauszüge in HEX 
oder ASCII ausgeben lassen. Sie 
können ferner ProDOS-Befehle 
(z.B. BLOAD) ausführen, in den 
Monitor oder nach Applesoft 
springen. 


Um Ihr Programm zu verfolgen, 
lassen Sie es entweder in Einzel- 
schritten (STEP) oder kontinu- 


ierlich (TRACE) ablaufen, wobei 
die Geschwindigkeit über die Ta- 
statur oder einen Joystick geregelt 
werden kann. Nach jedem Schritt 
werden alle Anzeigen aktualisiert. 
Unterroutinen, von denen Sie 
schon wissen, daß sie funktionie- 
ren, können Sie überspringen oder 
im Schnellgang durcheilen. Sie 
können sogar ganze Bereiche defi- 
nieren, in denen die volle Ge- 
schwindigkeit des Apple benutzt 
wird, wenn es sich um zeitkritische 
Routinen handelt (z.B. Disk-Ope- 
rationen). 


Wollen Sie sehen, wie Ihr Pro- 
gramm die 1. oder 2. Text-, Lores- 
oder Hires-Seite benutzt, können 
sie die BUGBYTER-Anzeige zeit- 
weise abschalten. Benutzt Ihr Pro- 
gramm die Tastatur, können Sie 
BUGBYTER mit dem Joystick 





stoppen und starten und alle Ta- 
sten bis auf eine von Ihnen defi- 
nierte und von BUGBYTER benö- 
tigte freigeben. Da bleibt eigentlich 
kein Wunsch mehr offen. 


In Ihrem Programm können Sie 
Stoppstellen vorwählen. Transpa- 
rente Stoppstellen ändern Ihren 
Code nicht, sondern halten die 
Ausführung nur an, wenn die ge- 
wählte Adresse erreicht ist. Sie 
können vorgeben, ob dies bereits 
beim ersten Erreichen der Stopp- 
stelle geschehen soll oder erst bei 
einem wiederholten Male, wobei 
BUGBYTER dann die Zahl der tat- 
sächlichen Durchläufe anzeigt. Auf 
dese Weise können Sie z.B. 
Schleifen austesten. Echte Stopp- 
stellen modifizieren den Code und 
sind nur notwendig, wenn Sie Ihr 
Programm mit voller Geschwindig- 


TESTDERICHTE ae 


keit testen wollen. Sie brauchen 
sich um die überschriebenen 
Bytes nicht zu kümmern, denn 
BUGBYTER rekonstruiert sie auf 
Befehl. 

Ich konnte Ihnen hier nur einen 
knappen Überblick über die Funk- 
tionen geben, deren Kombination 
Ihnen endlose Möglichkeiten eröff- 
nen. Im Manual ist auf ca. 40 Sei- 
ten alles genau beschrieben. Le- 
diglich zwei Fehler haben sich dort 
eingeschlichen: Auf Seite 167 muß 
die Adresse $2006 und nicht 
$7C06 lauten und auf Seite 169 
$2005 anstatt $2006. Ob Sie nun 
ein Assembleranfänger sind und 
dem Apple ab und zu auf die Bytes 
schauen wollen oder ob Sie pro- 
fessionell große Programme nach 
Fehlern durchsuchen, mit dem 
BUGBYTER haben Sie dazu ein 
wundervolles Werkzeug. 





Ausgabe und 
Eingabe mi: 


TYPETERM® 


im Slot Ihres 


APPLE Ilie 


Das bedeutet: Computer- 
textverarbeitung von der 


Schreibmaschinentastatur! 
Steckerfertig ohne Umbau. 


TYPETERM- DM 479,- 
Interface incl. MWSt. 
für alle BROTHER-Typenrad- 
schreibmaschinen 


Paketpreis: DM 1348,- 


Schreibmaschine 
CE-51 mit TYPETERM 
























® 
QUALITÄT AUS ERSTER HAND. 


CE-61 mit TYPETERM .......... DM 1787,- 
EM-80 mit TYPETERM .......... DM 2087,- 
EM-100 mit TYPETERM ........ DM 3122,- 
TYPETERM-Kit für CE-50 ..... DM 468,- 
CE-25 mit TYPETERM ............. anfragen 


TYPETERM - ein starkes Interface für 
starke Maschinen! Alle Cursor- und Ctl- 
Befehle. 2k ROM auf der Karte f. DOS, 
PRODOS, CP/M, PASCAL. Alle Features: 
Hoch-/Tiefstellen, autom. Unterstreichen, 
var. Zeichen- u. Zeilenabst., autom. 
Papierzuführung usw. Ausführl. 
Handbuch vorab: 10,— DM auf Konto 
14770-306 PGiroA Han (Anrechnung). 


TYPETERM ein Produkt von 
@ 





interkom Kock & Mreches GmbH 
— EE Postf., 3004 Isernhagen 4 
electronic Telefon 05139-87393 


Peeker 8/85 


Beagle Graphics 


getestet von Rolf W. Becker 


Beagle Graphics ist ein hervorra- 
gendes Zeichenhilfsmittel in der 
doppelt hochauflösenden Grafik 
(560 * 192 Punkte), wobei 16 
Grundfarben und 240 Mischfarben 
(in schwarzweiß entspricht dies 
verschiedenen Schraffuren) zur 
Verfügung stehen. Die Doppelt- 
Lores-Grafik (80 * 40 und 80 x 48 
Punkte) wird ebenfalls unterstützt. 
Gezeichnet werden kann mit der 
Apple-Mouse, dem Apple Gra- 
phics Tablet, dem Joystick bzw. 
Paddle oder dem Koalapad und 
schließlich auch mit der Tastatur. 
Die Diskette enthält sowohl eine 
DOS-3.3- als auch eine ProDOS- 
Version. 


Nach dem Booten wählt man mit 
, <Ctrl-D> RUN DOUBLE.PLOT" 
das Modul zum Zeichnen und be- 
stimmt danach eine der obenge- 
nannten Zeichenhilfen. Das dar- 
auffolgende Haupt-Menü bietet fol- 
gende Optionen: 


— Box zeichnet Rechtecke, 

— Circle zeichnet Kreise und El- 
lipsen, 

— Draw stellt einen Bleistift zum 
Freihandzeichnen zur Verfügung, 
— Line zieht eine Linie mit dem 
Bleistift, 

— Edit bearbeitet einen festzule- 
genden Teil, 


— Fill füllt umschlossene Flächen 
mit Mustern oder Farben, 

— Paint ermöglicht das Zeichnen 
mit verschiedenen Pinselstärken, 
— Text schreibt in 21 verschiede- 
nen Schriftarten, 

— Mode wählt zwischen den Dar- 
stellungsgrößen, 

— Set Color legt die Vorder- und 
Hintergrundfarbe fest, 

— X macht den Bildschirm in wähl- 
barer Farbe frei, 

— Quit verläßt das Programm. 

Mit der Leertaste kann ein kleiner 
Teil des Bildes in Einzelpunkten 
bearbeitet werden. 


Mit dem Edit-Befehl wird zunächst 
ein Gebiet der Zeichnung festge- 
legt, das dann bearbeitet werden 
kann. Dabei besteht die Möglich- 
keit, Gebiete zu löschen, zu kopie- 
ren oder zu verschieben. Weiterhin 
können die festgelegten Teile in- 
vertiert und in horizontaler und ver- 
tikaler Richtung verdreht werden. 
Mit der ESC-Taste kehrt man in 
das Haupt-Menü zurück. 


Mit <Ctrl-F> wird der Fill-Befehl 
angesprochen, der alle Möglich- 
keiten von Farben und Strukturen 
eröffnet. Damit ist Beagle Gra- 
phics, soweit ich informiert bin, das 
Programm, mit dem die größte Pa- 
lette auf dem Apple erreicht wer- 
den kann. Vor dem Füllen emp- 
fiehlt es sich, das Bild auf Diskette 
zu speichern, um den Vorgang zu 
wiederholen, falls etwas schief- 
geht. 


Der Paint-Befehl ermöglicht im 
Gegensatz zu MousePaint, das nur 
schwarze Pinselstriche erlaubt, 
auch andere Muster. Es stehen 16 
Pinselarten zur Verfügung, wobei 
mit einem Pinselstrich in der Bild- 
schirmfarbe auch ein Radiergummi 
benutzt werden kann. 


Mit dem Text-Befehl kann in einer 
der 21 verschiedenen Schriftarten 
(auch Russisch und Griechisch), 
die auf Diskette mitgeliefert wer- 
den, geschrieben werden. Darüber 
hinaus ermöglicht das Font-Editor- 
Programm die Erstellung eigener 
Zeichensätze. 


Mit <Ctrl-D> wählt man Disket- 
tenbefehle. Doppelt-Hires-Bilder 
werden automatisch in zwei Files 
gespeichert; der zweite mit dem 
Zusatz ,.AUX". Zusätzlich befin- 
det sich eine „SLIDE.SHOW“ auf 
Diskette, mit der man seine Dop- 
pelt-Hires-Bilder wie in einer Dia- 
Show auf dem Bildschirm ablaufen 
lassen kann. 


Beagle Graphics beinhaltet 33 
neue Applesoft-Befehle, die alle 
sehr gut und ohne Probleme in 
eigene Programme einfügbar sind 
und auch alle ausgezeichnet funk- 
tionieren. Außerdem gibt es einige 
interessante und nützliche Utilities 
wie z.B. die Umwandlung von ei- 
genen Hires- in Doppelt-Hires-Bil- 
der (auch für Lores). Besonders 
nützlich ist „DOUBLE. 


77 














SCRUNCH". Damit werden die 
beiden Bild-Files auf Diskette zu 
einer kleineren Datei zusammen- 
gefaBt. Man kann so mehr Bilder 
für die „SLIDE.SHOW“ auf einer 
Diskette speichern. 
Applesoft-Grafikprogramme wer- 
den mit der ,HGR.TO.DHGR"- 
bzw. ,GR.TO.DGR"-Utilitie auto- 
matisch umgewandelt, haben dann 
also den neuen Befehlssatz. 


Ich habe das Programm mit der 
Apple-Mouse, dem Joystick und 
der Tastatur getestet. Mit der Ta- 
statur ist das Zeichnen mühselig, 
führt aber zu guten Ergebnissen. 
Mit dem Joystick ist die Handha- 
bung sehr einfach, doch meiner 
Ansicht nach auch sehr ungenau, 
vor allem, wenn man exakt positio- 
nieren will. Am besten konnte ich 
mit der Apple-Mouse zeichnen. 


Zwar gibt es hier nicht die Möglich- 
keit, wie bei MousePaint alle Verar- 
beitungsmöglichkeiten über Fen- 
ster anzuklicken — die Befehle wer- 
den über Einzeltasten wie „E“ für 
Edit eingegeben -, doch die Um- 
stellung fällt nicht schwer. Die Re- 
sultate sind hervorragend. Jeder 
Punkt der Zeichnung ist genau er- 
reichbar; kleinste Details können 
exakt eingezeichnet werden. 
Leider war die entsprechende Trei- 
ber-Software für die Doppelt-Hires 
noch nicht lieferbar (es wird „Triple 
Dump“ von Beagle Bros Inc ange- 
boten). Deshalb konnte ich noch 
keine Bilder drucken. 
Hardware-Voraussetzungen: Ap- 
ple Ilc oder Ile mit erweiterter 80- 
Zeichen-Karte. 

Erhältlich ist dieses Programm für 
ca. DM 240,- bei einschlägigen Im- 
porteuren. 


Finanzbuchhaltung 
für CPyM-80-Systeme, z.B. Apple, Proteus, TRS-80; 
für Commodore CBM 8032/4032 mit Diskettenlaufwerk. 


Anlagenbuchhaltung 
(unter anderem für Abschreibungsberechnung) 
für CP/M-80-Systeme, z. D Apple, Proteus, TRS-80. 


Die CP/M-Programme sind auch unter MP/M lauffähig. 


Bitte geben Sie bei Anfragen Ihren 
Computertyp und die Ausbaustufe an. 


Programmierbüro Kurt Kastner, Nikolausstr. 3 


7500 Karlsruhe - Rüppurr 


Telefon 07 21 / 88 42 90 





Inserentenverzeichnis peeker 8/85 


aaa electronic gmbh, Freiburg . 


ccp-datentechnik, Hamburg 
U. Dobbertin, Brühl 


Seite 
25 
59 
35 


D.O.S. Computersysteme, Schwäbisch Hall v å ü ë.a M 


HIB, Nürnberg 


IBS Computertechnik, Bielefeld 
Interkom electronic, Isernhagen 


Intus, Waldshut-Tiengen . 
Jeschke, Kelkheim 


Kurt Kastner, Karlsruhe- -Röppurr 


E AN Meyer, Frohnhausen . 


78 
U4 
77 
66 
76 
78 
23 


Micromint Computer GmbH, Erkrath . . . . . . . . 59 
U. Mohwinkel Electronic, Leverkusen . . . . . . . . 35 


Pandabooks, Berlin 
Pandasoft, Berlin 
Summagraphics, München . 
Tombstone-Micro, Berlin 
Ueding electronics, Menden 


78 


21 
11 
47 
35 
73 





AKUSTIK-KOPPLER - Dataphon s21d 
300 Baud Modem , nach CCITT V.21 Standard, 
m. FTZ-Nr. 18.13.1917.00, Gebühren- und 
anmeldefrei, Y24/RS-232 Standard-Schnittst. 


T = PLETT - T 
geeignet fir Apple //+ und Apple / /e: 
I Dataphon s2 1d, 
1 Anschlußkabel: V.24 zum Apple II-Game-1/O, 
I Terminalprogramm: "HIB Modem- Transfer" 


für Apple //+ und Apple //e anschluBf. im Gehåuse 
w.o. jedoch fir Apple //c 


TOSHIBA Spitzenlaufwerke zum Superpreis! 
ND 06-D, 2 x 80 Track, 640 K-Byte formatiert 


DISK-DOPPEL-STATION (APPLE //+ APPLE // 
2 x ND 06-D im Geh. + Auto-Patchcontr., 1,2 MB 


AUTO-PATCH-CONTROLLER 
IC-Test-Karte ( Testet ca. 500 verschiedene IC's) 


ROTHER-Matri er, die Super- ! 
M- 1009 (Matrixdrucker , RS-232 + Centronics) 
M- 1009 anschluBfertig an: 

Apple //c (mit Drucker-Kabel) 
Apple //e (mit Graphik- Interface und Kabel) 


nur DM 


nur DM 


DM 
DM 


DM 


DM 
DM 
DM 


DM 


DM 
DM 


Alle Preise inclusive der gesetzlichen Mehrwertsteuer. 
Berechnung der Versandkosten erfolgt nach Entfernung und Gewicht. 
Fordern Sie noch heute unsere Gratispreisliste anfwiederverkäufer bitte nur 
schriftlich anfragen (Kopie der Gewerbeanmeldung beilegen!). 


rå HIB Computerladen 





298,00 


398,00 


498,00 
569,00 


549,00 


1698,00 
298,00 
398,00 


698,00 


798,00 
898,00 


ÄuB. Bayreuther Str. 72 - Telefon: 0911 / 515 939 


Postfach 21 01 25 
8500 Nürnberg 21 


- Telex: 17 - 911 8253 
- Teletex: 2526 - 911 82 53 


Einem Teil dieser Ausgabe liegt ein Prospekt der Firma Interdata 


GmbH, Singen bei. 
Wir bitten unsere Leser um Beachtung. 


Vergriffene Peeker-Hefte 


Abonnenten können vergriffene 
Peeker-Hefte als Heft-Kopien er- 
werben. Inlandspreis DM 10,- inkl. 
Versandkosten. Auslandspreis DM 
12,- inkl. Versandkosten (Luftpost- 


zusendung extra). 
Z. Zt. sind vergriffen 
und Heft 1-2/1985 


Heft 1/1984 





Peeker 8/85 


“TI 
PASCAL 


Betriebssystem 


ARLE N 
PASCAL 


Sprache 


KE 
KE 


GI 


Apple II Betriebssystem, 
272 Seiten, DM 49 — 


Apple II Sprache, 
216 Seiten, DM 39,- 


Pascal 1.2 Addendum, 112 Seiten, 
DM 36,- 


APPLE II ASA 


Betriebssystem und 
Sprache 


Erstes deutsches Referenzwerk såmtlicher Befehle 
und Systemroutinen von Apple II Pascal — mit Adden- 
dum einschließlich Version Pascal 1.2! 


Gültig für Apple II, II Plus, Ile einschließlich der 
128K/80 Zeichen-Konfiguration. 


Betriebssystem kommentiert ausführlich und in 
Deutsch Funktion und Benutzung der fast 60 System- 
routinen des Apple II Pascal Betriebssystems. 


Sprache ist das vollständige, deutsche Referenzwerk 
der „Apple Pascal“-Programmiersprache mit u.a. Infor- 
mationen über professionelle Pascal-Programmierung, 
Turtlegraphics, Programmbibliothek etc. 


In Vorbereitung: Addendum Pascal 1.2, ein 
Zusatz zum Buch „Betriebssystem“ für 1.2-Benutzer in 
Deutsch. 


„Nach Unterlagen von Apple Deutschland hergestellt“ 


te-wi Verlag GmbH 


EN 
Theo-Prosel-Weg 1 IPLI 
8000 München 40 


Weiterführende Literatur... 


Das N, 


£ 
APPLE II - Handbuch 


(L. Poole) 


LOGO - 
Jeder kann programmieren 
(Daniel Watt) 


tm 4298 


ew Unentbehrlich für alle, die die Programmier- 
Ø sprache PASCAL lernen wollen und 
um Zugang zu einem Apple-Computer haben. 


| Erst mit Hilfe dieses Leitfadens werden Sie 
“2 Ihren Apple II erfolgreich einsetzen, denn 
31 Text und Bildmaterial gehen weit über das 
déi hinaus, was herstellerseitig an Literatur 
angeboten wird. 


Neu überarbeitet und jetzt um die spezifi- 
schen Eigenheiten der Modelle lle und IIc 


Ð erweitert. 500 Seiten, Softcover, DM 66. - 


APPLE II PASCAL - 
Eine praktische Anleitung 
(A. Luehrmann, H. Peckham) 


544 Seiten, Softcover, DM 59,- 








Computer für Kinder 

(Sally Greenwood Larson) A APPLE 

Ein Buch für Kinder. ihre Lehrer MASCHINEN 
und Eltern. SPRACHE 
„Computer für Kinder“ richtet SP DIET 
sich an Kinder im Alter von 8 bis 

13 Jahren. für deren Interesse an 

Computern dieses Buch bewußt 

geschrieben wurde. 


Unterhaltsam und leicht verständlich. 


A4 quer. Fadenheftung. DM 29.80 


Buch des Jahres in den USA. Für die 
Computer APPLE II, C-64, IBM PC, ATARI 
bis 520 ST, TI-99 und CPC 464/664. 
Hochwertiges Textbuch für Logo-Kurse für 
zu Hause und im Lehrbereich. 


ES 384 Seiten, A4, DM 59,- 


APPLE II - Bewegte 3D-Graphik 

(Phil Cohen) 

Selbstentworfene Graphiken und Dia- 
gramme - animiert oder als Standbilder — 
eben oder räumlich: alle erforderlichen 
BASIC-Programme mit Erklärung finden 
Sie in diesem Buch. 

200 Seiten, Softcover, DM 49,- 


Apple Maschinensprache 

Für BASIC-Programmierer der einfachste 
Zugang zur Muttersprache des Apple. Wesent- 
lich schnellere Maschinenprogramme, direkte 
Manipulation des Mikroprozessors 6502 im 
Apple — als Brücke dorthin benötigt dieses 
Buch nur die drei BASIC-Befehle, POKE, 
CALL, PEEK. D. Inman/K. Inman. DM 49, — 





NEU: REPARATURANLEITUNG 
COMPUTER: APPLE IL I PLUS 
DM 29,80 





Noch im Programm: 
6502 —- Programmieren in Assembler DM 59,- 
VisiCalc, 50 Programme auf Diskette, DM 79,- 


In Vorbereitung: 
Macintosh Programmier-Handbuch DM 59,- 





EEE SEE TR a en ` `` s Í 
Interfaces für Computer mit Applebus + Interfaces für Computer mit Applebus + Interfa 








AP 13 und AP 17 AP 33 
RAM-Karten zum Einsatz als Pseu- RAMDISK der neuen Generation. 
dodisk unter CP/M, USCD und Für besonders speicherintensive 
APPLE-DOS. Speichergröße von Arbeiten ist der Ausbau in Stufen 
64 kByte bis 256 kByte. von 64 kByte bis 1MByte möglich. 
Bestell-Nr.: A 1013 a-b Bestell-Nr. A 1033 

A 1017 a-d 








AP 19 

12-Kanal AD-DA-Wandler mit 12 bit 
Auflösung und 25 u sec Wandlungs- 
zeit. Eingangsspannung +10 V. Ein 
schneller Wandler für extrem 


AP 14 
Floppy-Controller für alle Anwen- 
dungsfälle. 10 Laufwerke können 
gleichzeitig angeschlossen werden. 
4 x 8” DSDD, 4 x .517" DSDD und 


zwei Apple-Standardlaufwerke. schnalle AGA 
Maximal ca. 10MByte im Direktzu- Bestell-Nr.: A 1019 
griff. 


Bestell-Nr.: A 1014 





EBA SIIRA een 


NEU! 8 MHz Takt 





AP 22 

INTEMEX mit Z 80 B-CPU und 64 
k-RAM. Wenn Sie einmal diese Karte 
in Aktion gesehen haben, werden Sie 
auch feststellen: „Geschwindigkeit 
ist keine Hexerei, man braucht nur 
die AP 22”. Mit dieser Karte wird Ihr 
APPLE II zum z.Z. schnellsten CP/M- 
Computer, und in Verbindung mit 


ø jetzt 512 k-RAM 


AP 20 

INTEMEX mit 68 000 CPU und 128 
k-RAM. Diese Karte macht aus Ihrem 
Rechner mit „Applebus” einen ech- 
ten 16 bit-Rechner. Eine Zusatzkarte 
(AP 26) ermöglicht einen Arbeitsspei- 
cher bis zu einem MByte und an Soft- 





ware gibt es einiges. Z.B. stehen drei dem SPACE 84 erhalten Sie Compu- 
Betriebssysteme und die wichtigsten terleistung, die wirklich einmalig ist. 
Hochsprachen zur Verfugung. Wir vermitteln gerne eine Vorfuhrung. 
Bestell-Nr. A 1020 Bestell-Nr. A 1022 


Das Interface-Buch von IBS, ein Buch für Alle, die Ihren APPLE II oder Kompatiblen 
optimal nutzen wollen. Detaillierte Schaltpläne, Bauteilelisten und Benutzungshinweise 
W zu allen IBS-Interfaces finden Sie jetzt in einem Buch vereint. Ausführliche Abhandlun- 
<Š KK? gen über Spezialschaltungen, über Anwendungsmöglichkeiten, über neue Software- 
<Š welten aber auch uber die Grenzen des APPLE II-Systems bestimmen den Wert dieses 
Buches. 
Für nur DM 8,00 erhalten Sie dieses Buch ab sofort bei Ihrem Computerfachhändler 
oder für DM 8,00 + DM 2,00 Versandkosten bei IBS COMPUTERVERTRIEB. 


135 
COMPUTETTECcHNIT 
Olper Straße 10 - 4800 Bielefeld 14 - Tel.: 0521/444032 - W. Germany 
1011 Rose Marie Lane 16 - Stockton CA 95207 - Tel. 209/473 — 7473 USA